View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0000299 | JVT JM H.264/AVC reference software | encoder | public | 2012-04-18 11:18 | 2012-07-19 11:46 |
Reporter | Andreas Unterweger | Assigned To | Karsten Suehring | ||
Priority | normal | Severity | major | Reproducibility | always |
Status | resolved | Resolution | fixed | ||
Platform | Linux | OS | Ubuntu 11.10 | OS Version | Kernel 3.0.0-16 |
Product Version | JM 18.3 | ||||
Fixed in Version | JM 18.4 | ||||
Summary | 0000299: JM does not compile with MVC disabled | ||||
Description | JM does not compile if MVC_EXTENSION_ENABLE is 0. This seems to be related to this issue: https://ipbt.hhi.fraunhofer.de/mantis/view.php?id=204 | ||||
Steps To Reproduce | * Set MVC_EXTENSION_ENABLE in lencod/inc/defines.h to 0 * make | ||||
Additional Information | gcc 4.6.1 output using make [..] compiling object file "obj/list_reorder.o" ... src/list_reorder.c: In function ‘poc_ref_pic_reorder_frame_enh’: src/list_reorder.c:299:18: error: ‘StorablePicture’ has no member named ‘view_id’ src/list_reorder.c: In function ‘poc_ref_pic_reorder_field_enh’: src/list_reorder.c:443:18: error: ‘StorablePicture’ has no member named ‘view_id’ src/list_reorder.c: In function ‘reorder_lists’: src/list_reorder.c:1137:14: warning: variable ‘num_ref’ set but not used [-Wunused-but-set-variable] src/list_reorder.c: In function ‘reorder_against_default_ref_pic_lists’: src/list_reorder.c:1295:44: error: ‘Slice’ has no member named ‘abs_diff_view_idx_minus1’ src/list_reorder.c:1350:15: error: ‘StorablePicture’ has no member named ‘view_id’ make[1]: *** [obj/list_reorder.o] Error 1 [..] | ||||
Tags | No tags attached. | ||||
|
MVCdisabled.patch (5,507 bytes)
Index: ldecod/src/image.c =================================================================== --- ldecod/src/image.c (revision 4) +++ ldecod/src/image.c (working copy) @@ -1575,10 +1575,12 @@ currStream->frame_bitoffset = currStream->read_len = 0; memcpy (currStream->streamBuffer, &nalu->buf[1], nalu->len-1); currStream->code_len = currStream->bitstream_length = RBSPtoSODB(currStream->streamBuffer, nalu->len-1); +#if (MVC_EXTENSION_ENABLE) currSlice->view_id = GetBaseViewId(p_Vid, &p_Vid->active_subset_sps); currSlice->inter_view_flag = 1; currSlice->layer_id = currSlice->view_id = GetVOIdx( p_Vid, currSlice->view_id ); currSlice->anchor_pic_flag = currSlice->idr_flag; +#endif BitsUsedByHeader = FirstPartOfSliceHeader(currSlice); UseParameterSet (currSlice); @@ -1588,7 +1590,9 @@ currSlice->chroma444_not_separate = (p_Vid->active_sps->chroma_format_idc==YUV444)&&((p_Vid->separate_colour_plane_flag == 0)); BitsUsedByHeader += RestOfSliceHeader (currSlice); +#if (MVC_EXTENSION_ENABLE) currSlice->p_Dpb = p_Vid->p_Dpb_layer[currSlice->view_id]; +#endif assign_quant_params (currSlice); Index: ldecod/src/mbuffer.c =================================================================== --- ldecod/src/mbuffer.c (revision 4) +++ ldecod/src/mbuffer.c (working copy) @@ -160,12 +160,14 @@ } size /= pic_size; +#if (MVC_EXTENSION_ENABLED) if(p_Vid->profile_idc == MVC_HIGH || p_Vid->profile_idc == STEREO_HIGH) { int num_views = p_Vid->active_subset_sps->num_views_minus1+1; size = imin(2*size, imax(1, RoundLog2(num_views))*16)/num_views; } else +#endif size = imin( size, 16); if (active_sps->vui_parameters_present_flag && active_sps->vui_seq_parameters.bitstream_restriction_flag) Index: ldecod/src/annexb.c =================================================================== --- ldecod/src/annexb.c (revision 4) +++ ldecod/src/annexb.c (working copy) @@ -199,8 +199,8 @@ nalu->startcodeprefix_len = 4; } - //the 1st byte stream NAL unit can has leading_zero_8bits, but subsequent ones are not - //allowed to contain it since these zeros(if any) are considered trailing_zero_8bits + //the 1st byte stream NAL unit can have leading_zero_8bits, but subsequent ones are not + //allowed to contain it since these zeros (if any) are considered trailing_zero_8bits //of the previous byte stream NAL unit. if(!annex_b->IsFirstByteStreamNALU && LeadingZero8BitsCount > 0) { Index: lencod/src/list_reorder.c =================================================================== --- lencod/src/list_reorder.c (revision 4) +++ lencod/src/list_reorder.c (working copy) @@ -292,6 +292,7 @@ // First find inter view ref/s // This code is idiotic since this can be found immediately given that reference is in p_Dpb->fs_ilref +#if (MVC_EXTENSION_ENABLE) if (currSlice->layer_id > 0) { for (i = 0; i < (int) num_ref_idx_lX_active; i++) @@ -304,6 +305,7 @@ } } } +#endif // Now access all references in buffer and assign them // to a potential reordering list. For each one of these @@ -435,6 +437,7 @@ int bot_idx = 0; +#if (MVC_EXTENSION_ENABLE) // First find inter view ref if (currSlice->layer_id > 0) { @@ -448,6 +451,7 @@ } } } +#endif // Now access all references in buffer and assign them // to a potential reordering list. For each one of these @@ -1292,7 +1296,9 @@ VideoParameters *p_Vid = currSlice->p_Vid; int *modification_of_pic_nums_idc = currSlice->modification_of_pic_nums_idc[cur_list]; int *abs_diff_pic_num_minus1 = currSlice->abs_diff_pic_num_minus1[cur_list]; +#if (MVC_EXTENSION_ENABLE) int *abs_diff_view_idx_minus1 = currSlice->abs_diff_view_idx_minus1[cur_list]; +#endif int i; int maxPicNum, currPicNum, picNumLXNoWrap, picNumLXPred; @@ -1329,7 +1335,7 @@ #if MVC_EXTENSION_ENABLE currSlice->default_view_id[cur_list][i] != currSlice->listX[cur_list][i]->view_id || #endif - currSlice->default_pic_num[cur_list][i] != currSlice->listX[cur_list][i]->pic_num) + currSlice->default_pic_num[cur_list][i] != currSlice->listX[cur_list][i]->pic_num) { currSlice->ref_pic_list_reordering_flag[cur_list] = 1; break; @@ -1346,6 +1352,9 @@ for (i=0; i < currSlice->listXsize[cur_list]; i++) { StorablePicture *ref_pic = currSlice->listX[cur_list][i]; + int idx = 0; +#if (MVC_EXTENSION_ENABLE) + idx = abs_diff_view_idx_minus1[i]; // inter_view ref reordering if(ref_pic->view_id != currViewIdx) { @@ -1356,6 +1365,7 @@ } // temporal ref reordering else +#endif { diff = ref_pic->pic_num-picNumLXPred; if (diff <= 0) @@ -1394,13 +1404,13 @@ { if(modification_of_pic_nums_idc[i] == 4) { - picViewIdxLX = picViewIdxLXPred - (abs_diff_view_idx_minus1[i] + 1); + picViewIdxLX = picViewIdxLXPred - (idx + 1); if( picViewIdxLX <0) picViewIdxLX += maxViewIdx; } else //if(modification_of_pic_nums_idc[i] == 5) { - picViewIdxLX = picViewIdxLXPred + (abs_diff_view_idx_minus1[i] + 1); + picViewIdxLX = picViewIdxLXPred + (idx + 1); if( picViewIdxLX >= maxViewIdx) picViewIdxLX -= maxViewIdx; } |
|
Hello! With the patch attached I was able to compile the JM with MVC disabled. Hope it helps. |
|
The patch has been applied in Alexis' branch. I have added some more fixes to make the software properly compile with MVC_EXTENSION_ENABLE equal to 0. |
Date Modified | Username | Field | Change |
---|---|---|---|
2012-04-18 11:18 | Andreas Unterweger | New Issue | |
2012-06-18 18:07 | Vittorio Giovara | File Added: MVCdisabled.patch | |
2012-06-18 18:10 | Vittorio Giovara | Note Added: 0000536 | |
2012-07-19 11:46 | Karsten Suehring | Note Added: 0000545 | |
2012-07-19 11:46 | Karsten Suehring | Status | new => resolved |
2012-07-19 11:46 | Karsten Suehring | Fixed in Version | => JM 18.4 |
2012-07-19 11:46 | Karsten Suehring | Resolution | open => fixed |
2012-07-19 11:46 | Karsten Suehring | Assigned To | => Karsten Suehring |