Skip to content

Commit 3246e3b

Browse files
committed
changes
1 parent 8d24e9f commit 3246e3b

File tree

1 file changed

+11
-4
lines changed

1 file changed

+11
-4
lines changed

dependency.c

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -326,6 +326,7 @@ static void load_intra_frame_mb_dependency(int p_videoFileIndex, int _stFrame, i
326326
}
327327
}
328328
}
329+
//memset(intraDep, 0, sizeof(interDep[0][0][0][0])*MAX_FRAME_NUM_IN_GOP*MAX_MB_H*MAX_MB_W*MAX_DEP_MB);
329330
while (fgets(aLine, 40, gVideoCodecCtxList[p_videoFileIndex]->g_intraDepF) != NULL) {
330331
//parse the line
331332
//get the frame number, mb position first
@@ -363,7 +364,7 @@ static void load_inter_frame_mb_dependency(int p_videoFileIndex, int _stFrame, i
363364
if (gVideoCodecCtxList[p_videoFileIndex]->g_interDepF == NULL) {
364365
LOGE(1, "no valid inter frame mb dependency!!!");
365366
}
366-
for (l_idxF = 0; l_idxF < MAX_FRAME_NUM_IN_GOP; ++l_idxF) {
367+
/*for (l_idxF = 0; l_idxF < MAX_FRAME_NUM_IN_GOP; ++l_idxF) {
367368
for (l_idxH = 0; l_idxH < MAX_MB_H; ++l_idxH) {
368369
for (l_idxW = 0; l_idxW < MAX_MB_W; ++l_idxW) {
369370
for (l_curDepIdx = 0; l_curDepIdx < MAX_DEP_MB; ++l_curDepIdx) {
@@ -372,7 +373,8 @@ static void load_inter_frame_mb_dependency(int p_videoFileIndex, int _stFrame, i
372373
}
373374
}
374375
}
375-
}
376+
}*/
377+
memset(interDep, 0, sizeof(interDep[0][0][0][0])*MAX_FRAME_NUM_IN_GOP*MAX_MB_H*MAX_MB_W*MAX_DEP_MB);
376378
while (fgets(aLine, 40, gVideoCodecCtxList[p_videoFileIndex]->g_interDepF) != NULL) {
377379
//get the frame number, mb position first
378380
if ((aToken = strtok(aLine, ":")) != NULL)
@@ -667,13 +669,14 @@ if we know the roi for the entire GOP, we can pre-calculate the needed mbs at ev
667669
static void compute_mb_mask_from_inter_frame_dependency(int _stFrame, int _edFrame, int _stH, int _stW, int _edH, int _edW) {
668670
int l_i, l_j, l_k, l_m;
669671
LOGI(10, "start of compute_mb_mask_from_inter_frame_dependency");
670-
for (l_i = 0; l_i < MAX_FRAME_NUM_IN_GOP; ++l_i) {
672+
/*for (l_i = 0; l_i < MAX_FRAME_NUM_IN_GOP; ++l_i) {
671673
for (l_j = 0; l_j < MAX_MB_H; ++l_j) {
672674
for (l_k = 0; l_k < MAX_MB_W; ++l_k) {
673675
interDepMask[l_i][l_j][l_k] = 0;
674676
}
675677
}
676-
}
678+
}*/
679+
memset(interDepMask, 0, sizeof(interDepMask[0][0][0])*MAX_FRAME_NUM_IN_GOP*MAX_MB_H*MAX_MB_W);
677680
//from last frame in the GOP, going backwards to the first frame of the GOP
678681
//1. mark the roi as needed
679682
for (l_i = _edFrame; l_i >= _stFrame; --l_i) {
@@ -687,12 +690,16 @@ static void compute_mb_mask_from_inter_frame_dependency(int _stFrame, int _edFra
687690
//it's not necessary to process _stFrame, as there's no inter-dependency for it
688691
// for (l_i = _edFrame; l_i >= _stFrame; --l_i) {
689692
for (l_i = _edFrame; l_i > _stFrame; --l_i) {
693+
//as we initialize the interDepMask to zero, we don't have a way to tell whether the upper left mb should be decoded, we always mark it as needed
694+
interDepMask[l_i - 1 - _stFrame][0][0] = 1;
690695
for (l_j = 0; l_j <= MAX_MB_H; ++l_j) {
691696
for (l_k = 0; l_k <= MAX_MB_W; ++l_k) {
692697
if (interDepMask[l_i - _stFrame][l_j][l_k] == 1) {
693698
for (l_m = 0; l_m < MAX_DEP_MB; ++l_m) {
694699
//mark the needed mb in the previous frame
695700
if ((interDep[l_i - _stFrame][l_j][l_k][l_m].h < 0) || (interDep[l_i - _stFrame][l_j][l_k][l_m].w < 0))
701+
continue;
702+
if ((interDep[l_i - _stFrame][l_j][l_k][l_m].h == 0) && (interDep[l_i - _stFrame][l_j][l_k][l_m].w == 0))
696703
continue;
697704
LOGI(20, "%d,%d,%d,%d,%d,%d\n", l_i, l_j, l_k, l_m, interDep[l_i - _stFrame][l_j][l_k][l_m].h, interDep[l_i - _stFrame][l_j][l_k][l_m].w);
698705
interDepMask[l_i - 1 - _stFrame][interDep[l_i - _stFrame][l_j][l_k][l_m].h][interDep[l_i - _stFrame][l_j][l_k][l_m].w] = 1;

0 commit comments

Comments
 (0)