View Issue Details

IDProjectCategoryView StatusLast Update
0000299JVT JM H.264/AVC reference softwareencoderpublic2012-07-19 11:46
ReporterAndreas Unterweger Assigned ToKarsten Suehring  
PrioritynormalSeveritymajorReproducibilityalways
Status resolvedResolutionfixed 
PlatformLinuxOSUbuntu 11.10OS VersionKernel 3.0.0-16
Product VersionJM 18.3 
Fixed in VersionJM 18.4 
Summary0000299: JM does not compile with MVC disabled
DescriptionJM 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 Informationgcc 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
[..]
TagsNo tags attached.

Activities

Vittorio Giovara

2012-06-18 18:07

reporter  

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;
       }
MVCdisabled.patch (5,507 bytes)   

Vittorio Giovara

2012-06-18 18:10

reporter   ~0000536

Hello!
With the patch attached I was able to compile the JM with MVC disabled.
Hope it helps.

Karsten Suehring

2012-07-19 11:46

administrator   ~0000545

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.

Issue History

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