Skip to content

Commit e9386ee

Browse files
committed
some changes for easy porting to android
1 parent 704290e commit e9386ee

File tree

3 files changed

+70
-10
lines changed

3 files changed

+70
-10
lines changed

dependency.c

Lines changed: 67 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ static int videoIndexCmp(const int *a, const int *b) {
1212
}
1313
}
1414
/*parsing the video file, done by parse thread*/
15-
void get_video_info(char **p_videoFilenameList, int p_debug) {
15+
void get_video_info(int p_debug) {
1616
AVCodec *lVideoCodec;
1717
int lError;
1818
int l_dumpDep;
@@ -61,7 +61,7 @@ void get_video_info(char **p_videoFilenameList, int p_debug) {
6161
The following section are initialization for dumping dependencies
6262
**/
6363
/*open the video file*/
64-
if ((lError = av_open_input_file(&gFormatCtxDepList[l_i], p_videoFilenameList[l_i], NULL, 0, NULL)) !=0 ) {
64+
if ((lError = av_open_input_file(&gFormatCtxDepList[l_i], gVideoFileNameList[l_i], NULL, 0, NULL)) !=0 ) {
6565
LOGE(1, "Error open video file: %d", lError);
6666
return; //open file failed
6767
}
@@ -93,7 +93,7 @@ void get_video_info(char **p_videoFilenameList, int p_debug) {
9393
/***
9494
The following section are initialization for decoding
9595
**/
96-
if ((lError = av_open_input_file(&gFormatCtxList[l_i], p_videoFilenameList[l_i], NULL, 0, NULL)) !=0 ) {
96+
if ((lError = av_open_input_file(&gFormatCtxList[l_i], gVideoFileNameList[l_i], NULL, 0, NULL)) !=0 ) {
9797
LOGE(1, "Error open video file: %d", lError);
9898
return; //open file failed
9999
}
@@ -134,7 +134,11 @@ void get_video_info(char **p_videoFilenameList, int p_debug) {
134134
gVideoCodecCtxList[l_i]->debug_selective = p_debug;
135135
if (gVideoCodecCtxList[l_i]->debug_selective == 1) {
136136
//clear the old dump file
137+
#ifdef ANDROID_BUILD
138+
FILE *dctF = fopen("/sdcard/r10videocam/debug_dct.txt", "w");
139+
#else
137140
FILE *dctF = fopen("./debug_dct.txt", "w");
141+
#endif
138142
fclose(dctF);
139143
}
140144
}
@@ -583,11 +587,19 @@ int if_dependency_complete(int p_videoFileIndex, int p_gopNum) {
583587
FILE* lGopF;
584588
int ret, ti, tj;
585589
/*check if the dependency files exist, if not, we'll need to dump the dependencies*/
590+
#ifdef ANDROID_BUILD
591+
sprintf(l_depGopRecFileName, "%s_goprec_gop%d.txt", gVideoFileNameList[p_videoFileIndex], p_gopNum);
592+
sprintf(l_depIntraFileName, "%s_intra_gop%d.txt", gVideoFileNameList[p_videoFileIndex], p_gopNum);
593+
sprintf(l_depInterFileName, "%s_inter_gop%d.txt", gVideoFileNameList[p_videoFileIndex], p_gopNum);
594+
sprintf(l_depMbPosFileName, "%s_mbpos_gop%d.txt", gVideoFileNameList[p_videoFileIndex], p_gopNum);
595+
sprintf(l_depDcpFileName, "%s_dcp_gop%d.txt", gVideoFileNameList[p_videoFileIndex], p_gopNum);
596+
#else
586597
sprintf(l_depGopRecFileName, "./%s_goprec_gop%d.txt", gVideoFileNameList[p_videoFileIndex], p_gopNum);
587598
sprintf(l_depIntraFileName, "./%s_intra_gop%d.txt", gVideoFileNameList[p_videoFileIndex], p_gopNum);
588599
sprintf(l_depInterFileName, "./%s_inter_gop%d.txt", gVideoFileNameList[p_videoFileIndex], p_gopNum);
589600
sprintf(l_depMbPosFileName, "./%s_mbpos_gop%d.txt", gVideoFileNameList[p_videoFileIndex], p_gopNum);
590601
sprintf(l_depDcpFileName, "./%s_dcp_gop%d.txt", gVideoFileNameList[p_videoFileIndex], p_gopNum);
602+
#endif
591603
if ((!if_file_exists(l_depGopRecFileName)) || (!if_file_exists(l_depIntraFileName)) || (!if_file_exists(l_depInterFileName)) || (!if_file_exists(l_depMbPosFileName)) || (!if_file_exists(l_depDcpFileName))) {
592604
return 0;
593605
} else {
@@ -643,13 +655,22 @@ void dep_decode_a_video_packet(int p_videoFileIndex) {
643655
++gVideoPacketQueueList[p_videoFileIndex].dep_gop_num;
644656
}
645657
/*check if the dependency files exist, if not, we'll need to dump the dependencies*/
646-
LOGI(10, "dependency files for video %d gop %d", p_videoFileIndex, gVideoPacketQueueList[p_videoFileIndex].dep_gop_num);
658+
LOGI(10, "dependency files for video %d gop %d", p_videoFileIndex, gVideoPacketQueueList[p_videoFileIndex].dep_gop_num);
659+
#ifdef ANDROID_BUILD
660+
sprintf(l_depGopRecFileName, "%s_goprec_gop%d.txt", gVideoFileNameList[p_videoFileIndex], gVideoPacketQueueList[p_videoFileIndex].dep_gop_num);
661+
sprintf(l_depIntraFileName, "%s_intra_gop%d.txt", gVideoFileNameList[p_videoFileIndex], gVideoPacketQueueList[p_videoFileIndex].dep_gop_num);
662+
sprintf(l_depInterFileName, "%s_inter_gop%d.txt", gVideoFileNameList[p_videoFileIndex], gVideoPacketQueueList[p_videoFileIndex].dep_gop_num);
663+
sprintf(l_depMbPosFileName, "%s_mbpos_gop%d.txt", gVideoFileNameList[p_videoFileIndex], gVideoPacketQueueList[p_videoFileIndex].dep_gop_num);
664+
sprintf(l_depDcpFileName, "%s_dcp_gop%d.txt", gVideoFileNameList[p_videoFileIndex], gVideoPacketQueueList[p_videoFileIndex].dep_gop_num);
665+
666+
#else
647667
sprintf(l_depGopRecFileName, "./%s_goprec_gop%d.txt", gVideoFileNameList[p_videoFileIndex], gVideoPacketQueueList[p_videoFileIndex].dep_gop_num);
648668
sprintf(l_depIntraFileName, "./%s_intra_gop%d.txt", gVideoFileNameList[p_videoFileIndex], gVideoPacketQueueList[p_videoFileIndex].dep_gop_num);
649669
sprintf(l_depInterFileName, "./%s_inter_gop%d.txt", gVideoFileNameList[p_videoFileIndex], gVideoPacketQueueList[p_videoFileIndex].dep_gop_num);
650670
sprintf(l_depMbPosFileName, "./%s_mbpos_gop%d.txt", gVideoFileNameList[p_videoFileIndex], gVideoPacketQueueList[p_videoFileIndex].dep_gop_num);
651671
sprintf(l_depDcpFileName, "./%s_dcp_gop%d.txt", gVideoFileNameList[p_videoFileIndex], gVideoPacketQueueList[p_videoFileIndex].dep_gop_num);
652-
LOGI(10, "dependency files for video %d gop %d", p_videoFileIndex, gVideoPacketQueueList[p_videoFileIndex].dep_gop_num);
672+
#endif
673+
LOGI(10, "dependency files %s, %s, %s, %s, %s for video %d gop %d", l_depGopRecFileName, l_depIntraFileName, l_depInterFileName, l_depMbPosFileName, l_depDcpFileName, p_videoFileIndex, gVideoPacketQueueList[p_videoFileIndex].dep_gop_num);
653674
#ifdef CLEAR_DEP_BEFORE_START
654675
remove(l_depGopRecFileName);
655676
remove(l_depIntraFileName);
@@ -671,10 +692,25 @@ void dep_decode_a_video_packet(int p_videoFileIndex) {
671692
if (gVideoCodecCtxDepList[p_videoFileIndex]->dump_dependency) {
672693
LOGI(10, "dumping dependency starts from video %d, gop %d", p_videoFileIndex, gVideoPacketQueueList[p_videoFileIndex].dep_gop_num);
673694
gVideoCodecCtxDepList[p_videoFileIndex]->g_gopF = fopen(l_depGopRecFileName, "w");
695+
if (gVideoCodecCtxDepList[p_videoFileIndex]->g_gopF == NULL) {
696+
LOGI(10, "cannot open gop file to write");
697+
}
674698
gVideoCodecCtxDepList[p_videoFileIndex]->g_mbPosF = fopen(l_depMbPosFileName, "w");
699+
if (gVideoCodecCtxDepList[p_videoFileIndex]->g_mbPosF == NULL) {
700+
LOGI(10, "cannot open mb pos file to write");
701+
}
675702
gVideoCodecCtxDepList[p_videoFileIndex]->g_dcPredF = fopen(l_depDcpFileName, "w");
703+
if (gVideoCodecCtxDepList[p_videoFileIndex]->g_dcPredF == NULL) {
704+
LOGI(10, "cannot open dc prediction file to write");
705+
}
676706
gVideoCodecCtxDepList[p_videoFileIndex]->g_intraDepF = fopen(l_depIntraFileName, "w");
707+
if (gVideoCodecCtxDepList[p_videoFileIndex]->g_intraDepF == NULL) {
708+
LOGI(10, "cannot open intra frame dependency file to write");
709+
}
677710
gVideoCodecCtxDepList[p_videoFileIndex]->g_interDepF = fopen(l_depInterFileName, "w");
711+
if (gVideoCodecCtxDepList[p_videoFileIndex]->g_interDepF == NULL) {
712+
LOGI(10, "cannot open inter frame dependency file to write");
713+
}
678714
//dump the start frame number for the new gop
679715
fprintf(gVideoCodecCtxDepList[p_videoFileIndex]->g_gopF, "%d:", gVideoCodecCtxDepList[p_videoFileIndex]->dep_video_packet_num);
680716
}
@@ -712,7 +748,11 @@ void decode_a_video_packet(int p_videoFileIndex, int _roiStH, int _roiStW, int _
712748
/*read the next video packet*/
713749
LOGI(10, "decode_a_video_packet %d: (%d, %d) (%d, %d)", gVideoPacketNum, _roiStH, _roiStW, _roiEdH, _roiEdW);
714750
if (gVideoCodecCtxList[p_videoFileIndex]->debug_selective == 1) {
751+
#ifdef ANDROID_BUILD
752+
FILE *dctF = fopen("/sdcard/r10videocam/debug_dct.txt", "a+");
753+
#else
715754
FILE *dctF = fopen("./debug_dct.txt", "a+");
755+
#endif
716756
fprintf(dctF, "#####%d#####\n", gVideoPacketNum);
717757
fclose(dctF);
718758
}
@@ -764,7 +804,11 @@ void decode_a_video_packet(int p_videoFileIndex, int _roiStH, int _roiStW, int _
764804
#ifdef DUMP_SELECTIVE_DEP
765805
FILE *l_interF;
766806
char l_interFName[50];
807+
#ifdef ANDROID_BUILD
808+
sprintf(l_interFName, "/sdcard/r10videocam/%d/inter.txt", gVideoPacketNum);
809+
#else
767810
sprintf(l_interFName, "./%d/inter.txt", gVideoPacketNum);
811+
#endif
768812
LOGI(10, "filename: %s", l_interFName);
769813
l_interF = fopen(l_interFName, "w");
770814
if (l_interF != NULL) {
@@ -792,7 +836,11 @@ void decode_a_video_packet(int p_videoFileIndex, int _roiStH, int _roiStW, int _
792836
#ifdef DUMP_SELECTIVE_DEP
793837
FILE *l_dcpF;
794838
char l_dcpFName[50];
839+
#ifdef ANDROID_BUILD
840+
sprintf(l_dcpFName, "/sdcard/r10videocam/%d/dcp.txt", gVideoPacketNum);
841+
#else
795842
sprintf(l_dcpFName, "./%d/dcp.txt", gVideoPacketNum);
843+
#endif
796844
l_dcpF = fopen(l_dcpFName, "w");
797845
for (l_i = 0; l_i < l_mbHeight; ++l_i) {
798846
for (l_j = 0; l_j < l_mbWidth; ++l_j) {
@@ -815,7 +863,11 @@ void decode_a_video_packet(int p_videoFileIndex, int _roiStH, int _roiStW, int _
815863
#ifdef DUMP_SELECTIVE_DEP
816864
FILE *l_intraF;
817865
char l_intraFName[50];
866+
#ifdef ANDROID_BUILD
867+
sprintf(l_intraFName, "/sdcard/r10videocam/%d/intra.txt", gVideoPacketNum);
868+
#else
818869
sprintf(l_intraFName, "./%d/intra.txt", gVideoPacketNum);
870+
#endif
819871
l_intraF = fopen(l_intraFName, "w");
820872
for (l_i = 0; l_i < l_mbHeight; ++l_i) {
821873
for (l_j = 0; l_j < l_mbWidth; ++l_j) {
@@ -827,9 +879,17 @@ void decode_a_video_packet(int p_videoFileIndex, int _roiStH, int _roiStW, int _
827879
#endif
828880
#ifdef DUMP_SELECTED_MB_MASK
829881
if (gVideoPacketNum == 1) {
830-
l_maskF = fopen("./debug_mask.txt", "w");
882+
#ifdef ANDROID_BUILD
883+
l_maskF = fopen("/sdcard/r10videocam/debug_mask.txt", "w");
884+
#else
885+
l_maskF = fopen("./debug_mask.txt", "w");
886+
#endif
831887
} else {
832-
l_maskF = fopen("./debug_mask.txt", "a+");
888+
#ifdef ANDROID_BUILD
889+
l_maskF = fopen("/sdcard/r10videocam/debug_mask.txt", "a+");
890+
#else
891+
l_maskF = fopen("./debug_mask.txt", "a+");
892+
#endif
833893
}
834894
fprintf(l_maskF, "-----%d-----\n", gVideoPacketNum);
835895
for (l_i = 0; l_i < l_mbHeight; ++l_i) {

dependency.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,6 @@
4242
//#define DUMP_VIDEO_FRAME_BYTES //enabled: dump the bytes to a binary file
4343
//#define DUMP_SELECTIVE_DEP //enabled: dump the relationship in memory to files
4444

45-
#define MAX_NUM_OF_GOP 500
4645
#define MAX_FRAME_NUM_IN_GOP 50
4746
#define MAX_MB_H 100
4847
#define MAX_MB_W 100
@@ -95,7 +94,7 @@ int gGopEnd;
9594

9695
int *gZoomLevelToVideoIndex;
9796

98-
void get_video_info(char **p_videoFilename, int p_debug);
97+
void get_video_info(int p_debug);
9998
void allocate_selected_decoding_fields(int p_videoFileIndex, int _mbHeight, int _mbWidth);
10099
void free_selected_decoding_fields(int p_videoFileIndex, int _mbHeight);
101100
void dump_frame_to_file(int _frameNum);

ffplay.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,8 @@ static void render_a_frame(int _width, int _height, float _roiSh, float _roiSw,
156156
static void andzop_init(char **pFileNameList, int pDebug) {
157157
int l_mbH, l_mbW, l_i;
158158
gVideoFileNameList = pFileNameList;
159-
get_video_info(pFileNameList, pDebug);
159+
gCurrentDecodingVideoFileIndex = 0;
160+
get_video_info(pDebug);
160161
gVideoPacketNum = 0;
161162
#ifdef SELECTIVE_DECODING
162163
for (l_i = 0; l_i < gNumOfVideoFiles; ++l_i) {

0 commit comments

Comments
 (0)