Skip to content

Commit cd7df6a

Browse files
committed
mmap implementation draft done, start debugging
1 parent 6471c53 commit cd7df6a

File tree

4 files changed

+136
-44
lines changed

4 files changed

+136
-44
lines changed

dependency.c

Lines changed: 122 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -190,7 +190,7 @@ int *mbEndPos;
190190
int mapEdLen;
191191
int mbEndFd;
192192

193-
struct MBIdx intraDep[MAX_FRAME_NUM_IN_GOP][MAX_MB_H][MAX_MB_W][MAX_DEP_MB];
193+
//struct MBIdx intraDep[MAX_FRAME_NUM_IN_GOP][MAX_MB_H][MAX_MB_W][MAX_DEP_MB];
194194
//struct MBIdx interDep[MAX_FRAME_NUM_IN_GOP][MAX_MB_H][MAX_MB_W][MAX_DEP_MB];
195195
int interDepMask[MAX_FRAME_NUM_IN_GOP][MAX_MB_H][MAX_MB_W];
196196

@@ -253,18 +253,18 @@ void unload_frame_mb_edindex(void) {
253253
}
254254

255255
void load_frame_mb_stindex(int p_videoFileIndex) {
256-
char curDir[100];
257256
struct stat sbuf;
258-
char *data;
259-
LOGI(10, "+++++load_frame_mb_stindex: %s", gVideoCodecCtxList[p_videoFileIndex]->g_mbStPosFileName);
257+
char l_mbStPosFileName[100];
258+
sprintf(l_mbStPosFileName, "./%s_mbstpos_gop%d.txt", gVideoFileNameList[p_videoFileIndex], g_decode_gop_num);
259+
LOGI(10, "+++++load_frame_mb_stindex: %s", l_mbStPosFileName);
260260
//if (fd = open(gVideoCodecCtxList[p_videoFileIndex]->g_mbStPosFileName, O_RDONLY) == -1) {
261-
if ((mbStartFd = open(gVideoCodecCtxList[p_videoFileIndex]->g_mbStPosFileName, O_RDONLY)) == -1) {
261+
if ((mbStartFd = open(l_mbStPosFileName, O_RDONLY)) == -1) {
262262
LOGE(1, "file open error: %s", gVideoCodecCtxList[p_videoFileIndex]->g_mbStPosFileName);
263263
perror("file open error: ");
264264
exit(1);
265265
}
266266
//if (stat(gVideoCodecCtxList[p_videoFileIndex]->g_mbStPosFileName, &sbuf) == -1) {
267-
if (stat(gVideoCodecCtxList[p_videoFileIndex]->g_mbStPosFileName, &sbuf) == -1) {
267+
if (stat(l_mbStPosFileName, &sbuf) == -1) {
268268
LOGE(1, "stat error");
269269
exit(1);
270270
}
@@ -286,12 +286,14 @@ void load_frame_mb_stindex(int p_videoFileIndex) {
286286

287287
void load_frame_mb_edindex(int p_videoFileIndex) {
288288
struct stat sbuf;
289-
LOGI(10, "+++++load_frame_mb_edindex, file: %s", gVideoCodecCtxList[p_videoFileIndex]->g_mbEdPosFileName);
290-
if ((mbEndFd = open(gVideoCodecCtxList[p_videoFileIndex]->g_mbEdPosFileName, O_RDONLY)) == -1) {
289+
char l_mbEdPosFileName[100];
290+
sprintf(l_mbEdPosFileName, "./%s_mbedpos_gop%d.txt", gVideoFileNameList[p_videoFileIndex], g_decode_gop_num);
291+
LOGI(10, "+++++load_frame_mb_edindex, file: %s", l_mbEdPosFileName);
292+
if ((mbEndFd = open(l_mbEdPosFileName, O_RDONLY)) == -1) {
291293
LOGE(1, "file open error");
292294
exit(1);
293295
}
294-
if (stat(gVideoCodecCtxList[p_videoFileIndex]->g_mbEdPosFileName, &sbuf) == -1) {
296+
if (stat(l_mbEdPosFileName, &sbuf) == -1) {
295297
LOGE(1, "stat error");
296298
exit(1);
297299
}
@@ -309,7 +311,41 @@ void load_frame_mb_edindex(int p_videoFileIndex) {
309311
LOGI(10, "+++++load_frame_mb_edindex finished, exit the function");
310312
}
311313

312-
static void load_intra_frame_mb_dependency(int p_videoFileIndex, int _stFrame, int _edFrame) {
314+
unsigned char *intraDepMap, *intraDepMapMove;
315+
long intraDepMapLen;
316+
int intraDepFd;
317+
void unload_intra_frame_mb_dependency(void) {
318+
close(intraDepFd);
319+
munmap(intraDepMap, intraDepMapLen);
320+
}
321+
static void load_intra_frame_mb_dependency(int p_videoFileIndex) {
322+
char l_depIntraFileName[100];
323+
struct stat sbuf;
324+
sprintf(l_depIntraFileName, "./%s_intra_gop%d.txt", gVideoFileNameList[p_videoFileIndex], g_decode_gop_num);
325+
LOGI(10, "+++++load_intra_frame_mb_dependency, file: %s", l_depIntraFileName);
326+
if ((intraDepFd = open(l_depIntraFileName, O_RDONLY)) == -1) {
327+
LOGE(1, "file open error");
328+
exit(1);
329+
}
330+
if (stat(l_depIntraFileName, &sbuf) == -1) {
331+
LOGE(1, "stat error");
332+
exit(1);
333+
}
334+
LOGI(10, "file size: %ld", sbuf.st_size);
335+
//mbEndPos = mmap((caddr_t)0, sbuf.st_size, PROT_READ, MAP_PRIVATE, fd, 0);
336+
//mbEndPos = mmap(0, sbuf.st_size, PROT_READ, MAP_SHARED, fd, 0);
337+
intraDepMapLen = sbuf.st_size;
338+
intraDepMap = mmap(0, sbuf.st_size, PROT_READ, MAP_PRIVATE, intraDepFd, 0);
339+
intraDepMapMove = intraDepMap;
340+
if (intraDepMap == MAP_FAILED) {
341+
LOGE(1, "mmap error");
342+
perror("mmap error: ");
343+
exit(1);
344+
}
345+
LOGI(10, "+++++load_intra_frame_mb_dependency finished, exit the function");
346+
}
347+
348+
/*static void load_intra_frame_mb_dependency(int p_videoFileIndex, int _stFrame, int _edFrame) {
313349
char aLine[40], *aToken;
314350
int l_idxF, l_idxH, l_idxW, l_depH, l_depW, l_curDepIdx;
315351
LOGI(10, "load_intra_frame_mb_dependency\n");
@@ -357,7 +393,7 @@ static void load_intra_frame_mb_dependency(int p_videoFileIndex, int _stFrame, i
357393
}
358394
}
359395
LOGI(10, "load_intra_frame_mb_dependency finished\n");
360-
}
396+
}*/
361397

362398
unsigned char *interDepMap, *interDepMapMove;
363399
long interDepMapLen;
@@ -367,14 +403,15 @@ void unload_inter_frame_mb_dependency(void) {
367403
munmap(interDepMap, interDepMapLen);
368404
}
369405
static void load_inter_frame_mb_dependency(int p_videoFileIndex) {
370-
//mmap operation
406+
char l_depInterFileName[100];
371407
struct stat sbuf;
372-
LOGI(10, "+++++load_inter_frame_mb_dependency, file: %s", gVideoCodecCtxList[p_videoFileIndex]->g_interDepFileName);
373-
if ((interDepFd = open(gVideoCodecCtxList[p_videoFileIndex]->g_interDepFileName, O_RDONLY)) == -1) {
408+
sprintf(l_depInterFileName, "./%s_inter_gop%d.txt", gVideoFileNameList[p_videoFileIndex], g_decode_gop_num);
409+
LOGI(10, "+++++load_inter_frame_mb_dependency, file: %s", l_depInterFileName);
410+
if ((interDepFd = open(l_depInterFileName, O_RDONLY)) == -1) {
374411
LOGE(1, "file open error");
375412
exit(1);
376413
}
377-
if (stat(gVideoCodecCtxList[p_videoFileIndex]->g_interDepFileName, &sbuf) == -1) {
414+
if (stat(l_depInterFileName, &sbuf) == -1) {
378415
LOGE(1, "stat error");
379416
exit(1);
380417
}
@@ -443,14 +480,16 @@ void unload_frame_dc_pred_direction(void) {
443480
}
444481

445482
static void load_gop_dc_pred_direction(int p_videoFileIndex) {
483+
char l_dcPredFileName[100];
446484
struct stat sbuf;
447-
LOGI(10, "load_gop_dc_pred_direction: %s\n", gVideoCodecCtxList[p_videoFileIndex]->g_dcPredFileName);
448-
if ((dcpFd = open(gVideoCodecCtxList[p_videoFileIndex]->g_dcPredFileName, O_RDONLY)) == -1) {
449-
LOGE(1, "file open error: %s", gVideoCodecCtxList[p_videoFileIndex]->g_dcPredFileName);
485+
sprintf(l_dcPredFileName, "./%s_dcp_gop%d.txt", gVideoFileNameList[p_videoFileIndex], g_decode_gop_num);
486+
LOGI(10, "load_gop_dc_pred_direction: %s\n", l_dcPredFileName);
487+
if ((dcpFd = open(l_dcPredFileName, O_RDONLY)) == -1) {
488+
LOGE(1, "file open error: %s", l_dcPredFileName);
450489
perror("file open error: ");
451490
exit(1);
452491
}
453-
if (stat(gVideoCodecCtxList[p_videoFileIndex]->g_dcPredFileName, &sbuf) == -1) {
492+
if (stat(l_dcPredFileName, &sbuf) == -1) {
454493
LOGE(1, "stat error");
455494
exit(1);
456495
}
@@ -530,7 +569,7 @@ static void load_pre_computation_result(int p_videoFileIndex, int _stFrame, int
530569
//load_frame_mb_index(p_videoFileIndex, _stFrame, _edFrame); //the mb index position
531570
load_frame_mb_stindex(p_videoFileIndex); //the mb index position
532571
load_frame_mb_edindex(p_videoFileIndex); //the mb index position
533-
load_intra_frame_mb_dependency(p_videoFileIndex, _stFrame, _edFrame); //the intra-frame dependency
572+
load_intra_frame_mb_dependency(p_videoFileIndex); //the intra-frame dependency
534573
load_inter_frame_mb_dependency(p_videoFileIndex); //the inter-frame dependency
535574
load_gop_dc_pred_direction(p_videoFileIndex); //the dc prediction direction
536575
}
@@ -640,27 +679,32 @@ static int copy_bits(unsigned char *data, unsigned char *buf, int startPos, int
640679
return bufPos;
641680
}
642681

643-
static void compute_mb_mask_from_intra_frame_dependency_for_single_mb(int p_videoFileIndex, int _stFrame, int _frameNum, struct MBIdx _Pmb) {
682+
static void compute_mb_mask_from_intra_frame_dependency_for_single_mb(int p_videoFileIndex, int _stFrame, int _frameNum, struct MBIdx _Pmb, int _height, int _width) {
644683
struct Queue l_q;
645-
struct MBIdx l_mb;
684+
struct MBIdx l_mb, l_mb2;
646685
int l_i;
686+
unsigned char *p, *pframe;
647687

648688
initQueue(&l_q);
649689
enqueue(&l_q, _Pmb);
690+
pframe = intraDepMapMove + (_frameNum - _stFrame)*_height*_width*6;
650691
while (ifEmpty(&l_q) == 0) {
651692
//get the front value
652693
l_mb = front(&l_q);
653694
//mark the corresponding position in the mask
654695
if (gVideoCodecCtxList[p_videoFileIndex]->selected_mb_mask[l_mb.h][l_mb.w] > 1) {
655-
//it has been tracked before
696+
//it has been tracked before
656697
dequeue(&l_q);
657698
continue;
658699
}
659700
gVideoCodecCtxList[p_videoFileIndex]->selected_mb_mask[l_mb.h][l_mb.w]++;
660-
for (l_i = 0; l_i < MAX_DEP_MB; ++l_i) {
661-
if (intraDep[_frameNum - _stFrame][l_mb.h][l_mb.w][l_i].h == -1)
662-
break;
663-
enqueue(&l_q, intraDep[_frameNum - _stFrame][l_mb.h][l_mb.w][l_i]);
701+
for (l_i = 0; l_i < 3; ++l_i) {
702+
p = pframe + (l_mb.h*_width + l_mb.w)*8 + l_i*2;
703+
if ((*p !=0) || (*(p+1) != 0)) {
704+
l_mb2.h = *p;
705+
l_mb2.w = *(p+1);
706+
enqueue(&l_q, l_mb2);
707+
}
664708
}
665709
dequeue(&l_q);
666710
}
@@ -680,7 +724,7 @@ static void compute_mb_mask_from_intra_frame_dependency(int p_videoFileIndex, in
680724
if (gVideoCodecCtxList[p_videoFileIndex]->selected_mb_mask[l_i][l_j] == 1) {
681725
l_mb.h = l_i;
682726
l_mb.w = l_j;
683-
compute_mb_mask_from_intra_frame_dependency_for_single_mb(p_videoFileIndex, _stFrame, _frameNum, l_mb);
727+
compute_mb_mask_from_intra_frame_dependency_for_single_mb(p_videoFileIndex, _stFrame, _frameNum, l_mb, _height, _width);
684728
}
685729
}
686730
}
@@ -771,6 +815,7 @@ void dep_decode_a_video_packet(int p_videoFileIndex) {
771815
int ti, tj;
772816
FILE *tmpF, *postF;
773817
unsigned char interDep[8];
818+
unsigned char intraDep[6];
774819
char aLine[40], *aToken;
775820
unsigned char l_depH, l_depW, l_curDepIdx;
776821
int l_idxF, l_idxH, l_idxW;
@@ -812,7 +857,7 @@ void dep_decode_a_video_packet(int p_videoFileIndex) {
812857
fclose(gVideoCodecCtxDepList[p_videoFileIndex]->g_dcPredF);
813858
fclose(gVideoCodecCtxDepList[p_videoFileIndex]->g_intraDepF);
814859
fclose(gVideoCodecCtxDepList[p_videoFileIndex]->g_interDepF);
815-
//post processing for inter and intra frame dependency files to make them mmap compatible
860+
//post processing for inter frame dependency files to make them mmap compatible
816861
sprintf(l_depInterFileName, "%s_inter_gop%d.txt.tmp", gVideoFileNameList[p_videoFileIndex], gVideoPacketQueueList[p_videoFileIndex].dep_gop_num);
817862
sprintf(gVideoCodecCtxDepList[p_videoFileIndex]->g_interDepFileName, "%s_inter_gop%d.txt", gVideoFileNameList[p_videoFileIndex], gVideoPacketQueueList[p_videoFileIndex].dep_gop_num);
818863
tmpF = fopen(l_depInterFileName, "r");
@@ -843,14 +888,55 @@ void dep_decode_a_video_packet(int p_videoFileIndex) {
843888
}
844889
fclose(tmpF);
845890
fclose(postF);
891+
//post processing for intra-frame dependency
892+
sprintf(l_depIntraFileName, "%s_intra_gop%d.txt.tmp", gVideoFileNameList[p_videoFileIndex], gVideoPacketQueueList[p_videoFileIndex].dep_gop_num);
893+
sprintf(gVideoCodecCtxDepList[p_videoFileIndex]->g_intraDepFileName, "%s_intra_gop%d.txt", gVideoFileNameList[p_videoFileIndex], gVideoPacketQueueList[p_videoFileIndex].dep_gop_num);
894+
tmpF = fopen(l_depIntraFileName, "r");
895+
postF = fopen(gVideoCodecCtxDepList[p_videoFileIndex]->g_intraDepFileName, "w");
896+
LOGI(10, "...........processing %s to %s", l_depIntraFileName, gVideoCodecCtxDepList[p_videoFileIndex]->g_intraDepFileName);
897+
while (fgets(aLine, 40, tmpF) != NULL) {
898+
memset(intraDep, 0, 6);
899+
if ((aToken = strtok(aLine, ":")) != NULL) //get the frame number, mb position first
900+
l_idxF = atoi(aToken);
901+
if ((aToken = strtok(NULL, ":")) != NULL)
902+
l_idxH = atoi(aToken);
903+
if ((aToken = strtok(NULL, ":")) != NULL)
904+
l_idxW = atoi(aToken);
905+
//get the dependency mb
906+
do {
907+
aToken = strtok(NULL, ":");
908+
if (aToken != NULL) l_depH = (unsigned char) atoi(aToken);
909+
else break;
910+
aToken = strtok(NULL, ":");
911+
if (aToken != NULL) l_depW = (unsigned char) atoi(aToken);
912+
else break;
913+
//put the dependencies into the array
914+
if (l_depH == l_idxH - 1 && l_depW == l_idxW) {
915+
intraDep[0] = l_depH;
916+
intraDep[1] = l_depW;
917+
} else if (l_depH == l_idxH - 1 && l_depW == l_idxW + 1) {
918+
intraDep[2] = l_depH;
919+
intraDep[3] = l_depW;
920+
} else if (l_depH == l_idxH && l_depW == l_idxW - 1) {
921+
intraDep[4] = l_depH;
922+
intraDep[5] = l_depW;
923+
} else {
924+
LOGE(1, "EEEEEEEEEerror: intra dependency unexpected dependency");
925+
}
926+
} while (aToken != NULL);
927+
fwrite(intraDep, 1, 6, postF);
928+
}
929+
fclose(tmpF);
930+
fclose(postF);
846931
}
847932
++gVideoPacketQueueList[p_videoFileIndex].dep_gop_num;
848933
}
849934
/*check if the dependency files exist, if not, we'll need to dump the dependencies*/
850935
LOGI(10, "dependency files for video %d gop %d", p_videoFileIndex, gVideoPacketQueueList[p_videoFileIndex].dep_gop_num);
851936
#ifdef ANDROID_BUILD
852937
sprintf(l_depGopRecFileName, "%s_goprec_gop%d.txt", gVideoFileNameList[p_videoFileIndex], gVideoPacketQueueList[p_videoFileIndex].dep_gop_num);
853-
sprintf(l_depIntraFileName, "%s_intra_gop%d.txt", gVideoFileNameList[p_videoFileIndex], gVideoPacketQueueList[p_videoFileIndex].dep_gop_num);
938+
sprintf(l_depIntraFileName, "%s_intra_gop%d.txt.tmp", gVideoFileNameList[p_videoFileIndex], gVideoPacketQueueList[p_videoFileIndex].dep_gop_num);
939+
sprintf(gVideoCodecCtxDepList[p_videoFileIndex]->g_intraDepFileName, "%s_intra_gop%d.txt", gVideoFileNameList[p_videoFileIndex], gVideoPacketQueueList[p_videoFileIndex].dep_gop_num);
854940
sprintf(l_depInterFileName, "%s_inter_gop%d.txt.tmp", gVideoFileNameList[p_videoFileIndex], gVideoPacketQueueList[p_videoFileIndex].dep_gop_num);
855941
sprintf(gVideoCodecCtxDepList[p_videoFileIndex]->g_interDepFileName, "%s_inter_gop%d.txt", gVideoFileNameList[p_videoFileIndex], gVideoPacketQueueList[p_videoFileIndex].dep_gop_num);
856942
sprintf(gVideoCodecCtxDepList[p_videoFileIndex]->g_mbStPosFileName, "%s_mbstpos_gop%d.txt", gVideoFileNameList[p_videoFileIndex], gVideoPacketQueueList[p_videoFileIndex].dep_gop_num);
@@ -859,24 +945,27 @@ void dep_decode_a_video_packet(int p_videoFileIndex) {
859945

860946
#else
861947
sprintf(l_depGopRecFileName, "%s_goprec_gop%d.txt", gVideoFileNameList[p_videoFileIndex], gVideoPacketQueueList[p_videoFileIndex].dep_gop_num);
862-
sprintf(l_depIntraFileName, "%s_intra_gop%d.txt", gVideoFileNameList[p_videoFileIndex], gVideoPacketQueueList[p_videoFileIndex].dep_gop_num);
948+
sprintf(l_depIntraFileName, "%s_intra_gop%d.txt.tmp", gVideoFileNameList[p_videoFileIndex], gVideoPacketQueueList[p_videoFileIndex].dep_gop_num);
949+
sprintf(gVideoCodecCtxDepList[p_videoFileIndex]->g_intraDepFileName, "%s_intra_gop%d.txt", gVideoFileNameList[p_videoFileIndex], gVideoPacketQueueList[p_videoFileIndex].dep_gop_num);
863950
sprintf(l_depInterFileName, "%s_inter_gop%d.txt.tmp", gVideoFileNameList[p_videoFileIndex], gVideoPacketQueueList[p_videoFileIndex].dep_gop_num);
864951
sprintf(gVideoCodecCtxDepList[p_videoFileIndex]->g_interDepFileName, "%s_inter_gop%d.txt", gVideoFileNameList[p_videoFileIndex], gVideoPacketQueueList[p_videoFileIndex].dep_gop_num);
865952
sprintf(gVideoCodecCtxDepList[p_videoFileIndex]->g_mbStPosFileName, "%s_mbstpos_gop%d.txt", gVideoFileNameList[p_videoFileIndex], gVideoPacketQueueList[p_videoFileIndex].dep_gop_num);
866953
sprintf(gVideoCodecCtxDepList[p_videoFileIndex]->g_mbEdPosFileName, "%s_mbedpos_gop%d.txt", gVideoFileNameList[p_videoFileIndex], gVideoPacketQueueList[p_videoFileIndex].dep_gop_num);
867954
sprintf(gVideoCodecCtxDepList[p_videoFileIndex]->g_dcPredFileName, "%s_dcp_gop%d.txt", gVideoFileNameList[p_videoFileIndex], gVideoPacketQueueList[p_videoFileIndex].dep_gop_num);
868955
#endif
869-
LOGI(10, "dependency files %s, %s, %s, %s, %s, %s for video %d gop %d", l_depGopRecFileName, l_depIntraFileName, gVideoCodecCtxDepList[p_videoFileIndex]->g_interDepFileName, gVideoCodecCtxDepList[p_videoFileIndex]->g_mbStPosFileName, gVideoCodecCtxDepList[p_videoFileIndex]->g_mbEdPosFileName, gVideoCodecCtxDepList[p_videoFileIndex]->g_dcPredFileName, p_videoFileIndex, gVideoPacketQueueList[p_videoFileIndex].dep_gop_num);
956+
LOGI(10, "dependency files %s, %s, %s, %s, %s, %s for video %d gop %d", l_depGopRecFileName, gVideoCodecCtxDepList[p_videoFileIndex]->g_intraDepFileName, gVideoCodecCtxDepList[p_videoFileIndex]->g_interDepFileName, gVideoCodecCtxDepList[p_videoFileIndex]->g_mbStPosFileName, gVideoCodecCtxDepList[p_videoFileIndex]->g_mbEdPosFileName, gVideoCodecCtxDepList[p_videoFileIndex]->g_dcPredFileName, p_videoFileIndex, gVideoPacketQueueList[p_videoFileIndex].dep_gop_num);
870957
#ifdef CLEAR_DEP_BEFORE_START
871958
remove(l_depGopRecFileName);
872959
remove(l_depIntraFileName);
960+
remove(gVideoCodecCtxDepList[p_videoFileIndex]->g_intraDepFileName);
961+
remove(l_depInterFileName);
873962
remove(gVideoCodecCtxDepList[p_videoFileIndex]->g_depInterFileName);
874963
remove(gVideoCodecCtxDepList[p_videoFileIndex]->g_mbStPosFileName);
875964
remove(gVideoCodecCtxDepList[p_videoFileIndex]->g_mbEdPosFileName);
876965
remove(gVideoCodecCtxDepList[p_videoFileIndex]->g_dcPredFileName);
877966
#endif
878967
gVideoCodecCtxDepList[p_videoFileIndex]->dump_dependency = 1;
879-
if ((if_file_exists(l_depGopRecFileName)) && (if_file_exists(l_depIntraFileName)) && (if_file_exists(gVideoCodecCtxDepList[p_videoFileIndex]->g_interDepFileName)) && (if_file_exists(gVideoCodecCtxDepList[p_videoFileIndex]->g_mbStPosFileName)) && (if_file_exists(gVideoCodecCtxDepList[p_videoFileIndex]->g_mbEdPosFileName)) && (if_file_exists(gVideoCodecCtxDepList[p_videoFileIndex]->g_dcPredFileName))) {
968+
if ((if_file_exists(l_depGopRecFileName)) && (if_file_exists(gVideoCodecCtxDepList[p_videoFileIndex]->g_intraDepFileName)) && (if_file_exists(gVideoCodecCtxDepList[p_videoFileIndex]->g_interDepFileName)) && (if_file_exists(gVideoCodecCtxDepList[p_videoFileIndex]->g_mbStPosFileName)) && (if_file_exists(gVideoCodecCtxDepList[p_videoFileIndex]->g_mbEdPosFileName)) && (if_file_exists(gVideoCodecCtxDepList[p_videoFileIndex]->g_dcPredFileName))) {
880969
//if all files exist, further check l_depGopRecFileName file content, see if it actually contains both GOP start and end frame
881970
gVideoCodecCtxDepList[p_videoFileIndex]->g_gopF = fopen(l_depGopRecFileName, "r");
882971
if (load_gop_info(gVideoCodecCtxDepList[p_videoFileIndex]->g_gopF, &ti, &tj) != 0) {

dependency.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,4 +115,5 @@ void unload_frame_mb_stindex(void);
115115
void unload_frame_mb_edindex(void);
116116
void unload_frame_dc_pred_direction(void);
117117
void unload_inter_frame_mb_dependency(void);
118+
void unload_intra_frame_mb_dependency(void);
118119

0 commit comments

Comments
 (0)