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 |