Re: [libav-devel] [PATCH 1/2 v2] configure: add test_pkg_config()

2017-10-03 Thread James Almer
On 10/3/2017 9:49 PM, Diego Biurrun wrote:
> On Fri, Sep 29, 2017 at 10:56:08PM -0300, James Almer wrote:
>> --- a/configure
>> +++ b/configure
>> @@ -1039,8 +1039,15 @@ check_pkg_config(){
>>  pkg_libs=$($pkg_config --libs $pkg_config_flags $pkg)
>>  check_func_headers "$headers" "$funcs" $pkg_cflags $pkg_libs "$@" &&
>>  enable $name &&
>> -add_cflags"$pkg_cflags" &&
>> -eval $(sanitize_var_name ${name}_extralibs)="\$pkg_libs"
>> +set_sanitized "${name}_cflags"$pkg_cflags &&
>> +set_sanitized "${name}_extralibs" $pkg_libs
>> +}
>> +
>> +check_pkg_config(){
>> +log check_pkg_config "$@"
>> +pkg="${2%% *}"
>> +test_pkg_config "$@" || return
>> +add_cflags $(get_sanitized "${name}_cflags")
>>  }
> 
> You're setting pkg, but using name. Of course that works because all
> variables are global in this shell script, but it's not exactly pretty
> nonetheless.

Yes, it was a mistake i didn't notice since name is effectively set
globally as you said.

> I'll try to make up my mind which way I want to handle
> the situation.

Want me to send a new version replacing pkg="${2%% *}" with name="$1" as
i suggested in a previous reply?
___
libav-devel mailing list
libav-devel@libav.org
https://lists.libav.org/mailman/listinfo/libav-devel

Re: [libav-devel] [PATCH 1/2 v2] configure: add test_pkg_config()

2017-10-03 Thread Diego Biurrun
On Fri, Sep 29, 2017 at 10:56:08PM -0300, James Almer wrote:
> --- a/configure
> +++ b/configure
> @@ -1039,8 +1039,15 @@ check_pkg_config(){
>  pkg_libs=$($pkg_config --libs $pkg_config_flags $pkg)
>  check_func_headers "$headers" "$funcs" $pkg_cflags $pkg_libs "$@" &&
>  enable $name &&
> -add_cflags"$pkg_cflags" &&
> -eval $(sanitize_var_name ${name}_extralibs)="\$pkg_libs"
> +set_sanitized "${name}_cflags"$pkg_cflags &&
> +set_sanitized "${name}_extralibs" $pkg_libs
> +}
> +
> +check_pkg_config(){
> +log check_pkg_config "$@"
> +pkg="${2%% *}"
> +test_pkg_config "$@" || return
> +add_cflags $(get_sanitized "${name}_cflags")
>  }

You're setting pkg, but using name. Of course that works because all
variables are global in this shell script, but it's not exactly pretty
nonetheless. I'll try to make up my mind which way I want to handle
the situation.

Diego
___
libav-devel mailing list
libav-devel@libav.org
https://lists.libav.org/mailman/listinfo/libav-devel

Re: [libav-devel] [PATCH 1/2 v2] configure: add test_pkg_config()

2017-10-03 Thread Diego Biurrun
On Mon, Oct 02, 2017 at 11:49:27AM +0200, Diego Biurrun wrote:
> On Fri, Sep 29, 2017 at 10:56:08PM -0300, James Almer wrote:
> > --- a/configure
> > +++ b/configure
> > @@ -1025,8 +1025,8 @@ check_lib(){
> >  
> > -check_pkg_config(){
> > -log check_pkg_config "$@"
> > +test_pkg_config(){
> > +log test_pkg_config "$@"
> >  name="$1"
> >  pkg_version="$2"
> >  pkg="${2%% *}"
> > @@ -1039,8 +1039,15 @@ check_pkg_config(){
> >  pkg_libs=$($pkg_config --libs $pkg_config_flags $pkg)
> >  check_func_headers "$headers" "$funcs" $pkg_cflags $pkg_libs "$@" &&
> >  enable $name &&
> > -add_cflags"$pkg_cflags" &&
> > -eval $(sanitize_var_name ${name}_extralibs)="\$pkg_libs"
> > +set_sanitized "${name}_cflags"$pkg_cflags &&
> > +set_sanitized "${name}_extralibs" $pkg_libs
> > +}
> > +
> > +check_pkg_config(){
> > +log check_pkg_config "$@"
> > +pkg="${2%% *}"
> > +test_pkg_config "$@" || return
> > +add_cflags $(get_sanitized "${name}_cflags")
> >  }
> 
> At a quick glance, this looks like name and pkg are confused.

No. I should not review patches on the airport after what felt like 6 hours
of sleep in the last three days...

Diego
___
libav-devel mailing list
libav-devel@libav.org
https://lists.libav.org/mailman/listinfo/libav-devel

Re: [libav-devel] [PATCH] stereo3d: Support view type for frame sequence type

2017-10-03 Thread Vittorio Giovara
On Tue, Oct 3, 2017 at 9:29 AM, wm4  wrote:

> On Tue,  3 Oct 2017 09:26:39 -0400
> Vittorio Giovara  wrote:
>
> > Implement detection in h264 and hevc and insertion in framepack filter.
> >
> > Signed-off-by: Vittorio Giovara 
> > ---
> >  doc/APIchanges |  3 +++
> >  libavcodec/h264_sei.c  |  7 ---
> >  libavcodec/h264_sei.h  |  1 +
> >  libavcodec/h264_slice.c|  7 +++
> >  libavcodec/hevc_sei.c  |  9 +
> >  libavcodec/hevc_sei.h  |  1 +
> >  libavcodec/hevcdec.c   |  7 +++
> >  libavfilter/vf_framepack.c |  2 ++
> >  libavutil/stereo3d.h   | 24 
> >  libavutil/version.h|  2 +-
> >  10 files changed, 55 insertions(+), 8 deletions(-)
> >
> > diff --git a/doc/APIchanges b/doc/APIchanges
> > index fa27007f44..b518b6307f 100644
> > --- a/doc/APIchanges
> > +++ b/doc/APIchanges
> > @@ -13,6 +13,9 @@ libavutil: 2017-03-23
> >
> >  API changes, most recent first:
> >
> > +2017-xx-xx - xxx - lavu 56.7.0 - stereo3d.h
> > +  Add view field to AVStereo3D structure and AVStereo3DView enum.
> > +
> >  2017-xx-xx - xxx - lavu 56.6.0 - pixdesc.h
> >Add av_color_range_from_name(), av_color_primaries_from_name(),
> >av_color_transfer_from_name(), av_color_space_from_name(), and
> > diff --git a/libavcodec/h264_sei.c b/libavcodec/h264_sei.c
> > index 03fca9017f..da5d33c36c 100644
> > --- a/libavcodec/h264_sei.c
> > +++ b/libavcodec/h264_sei.c
> > @@ -314,10 +314,11 @@ static int 
> > decode_frame_packing_arrangement(H264SEIFramePacking
> *h,
> >  h->quincunx_subsampling   = get_bits1(gb);
> >  h->content_interpretation_type= get_bits(gb, 6);
> >
> > -// the following skips: spatial_flipping_flag,
> frame0_flipped_flag,
> > -// field_views_flag, current_frame_is_frame0_flag,
> > +// spatial_flipping_flag, frame0_flipped_flag, field_views_flag
> > +skip_bits(gb, 3);
> > +h->current_frame_is_frame0_flag = get_bits1(gb);
> >  // frame0_self_contained_flag, frame1_self_contained_flag
> > -skip_bits(gb, 6);
> > +skip_bits(gb, 2);
> >
> >  if (!h->quincunx_subsampling && h->arrangement_type != 5)
> >  skip_bits(gb, 16);  // frame[01]_grid_position_[xy]
> > diff --git a/libavcodec/h264_sei.h b/libavcodec/h264_sei.h
> > index f6ac6034da..c3a19dd831 100644
> > --- a/libavcodec/h264_sei.h
> > +++ b/libavcodec/h264_sei.h
> > @@ -108,6 +108,7 @@ typedef struct H264SEIFramePacking {
> >  int arrangement_type;
> >  int content_interpretation_type;
> >  int quincunx_subsampling;
> > +int current_frame_is_frame0_flag;
> >  } H264SEIFramePacking;
> >
> >  typedef struct H264SEIDisplayOrientation {
> > diff --git a/libavcodec/h264_slice.c b/libavcodec/h264_slice.c
> > index 5dd01d836e..1b968ebd50 100644
> > --- a/libavcodec/h264_slice.c
> > +++ b/libavcodec/h264_slice.c
> > @@ -1112,6 +1112,13 @@ static int h264_export_frame_props(H264Context
> *h)
> >
> >  if (fp->content_interpretation_type == 2)
> >  stereo->flags = AV_STEREO3D_FLAG_INVERT;
> > +
> > +if (fp->arrangement_type == 5) {
> > +if (fp->current_frame_is_frame0_flag)
> > +stereo->view = AV_STEREO3D_VIEW_LEFT;
> > +else
> > +stereo->view = AV_STEREO3D_VIEW_RIGHT;
> > +}
> >  }
> >
> >  if (h->sei.display_orientation.present &&
> > diff --git a/libavcodec/hevc_sei.c b/libavcodec/hevc_sei.c
> > index 0a5d4440bf..2bf170601d 100644
> > --- a/libavcodec/hevc_sei.c
> > +++ b/libavcodec/hevc_sei.c
> > @@ -57,10 +57,11 @@ static int 
> > decode_nal_sei_frame_packing_arrangement(HEVCSEIFramePacking
> *s, GetB
> >  s->quincunx_subsampling   = get_bits1(gb);
> >  s->content_interpretation_type= get_bits(gb, 6);
> >
> > -// the following skips spatial_flipping_flag frame0_flipped_flag
> > -// field_views_flag current_frame_is_frame0_flag
> > -// frame0_self_contained_flag frame1_self_contained_flag
> > -skip_bits(gb, 6);
> > +// spatial_flipping_flag, frame0_flipped_flag, field_views_flag
> > +skip_bits(gb, 3);
> > +s->current_frame_is_frame0_flag = get_bits1(gb);
> > +// frame0_self_contained_flag, frame1_self_contained_flag
> > +skip_bits(gb, 2);
> >
> >  if (!s->quincunx_subsampling && s->arrangement_type != 5)
> >  skip_bits(gb, 16);  // frame[01]_grid_position_[xy]
> > diff --git a/libavcodec/hevc_sei.h b/libavcodec/hevc_sei.h
> > index e4aeac1fbe..8d4f5df69f 100644
> > --- a/libavcodec/hevc_sei.h
> > +++ b/libavcodec/hevc_sei.h
> > @@ -67,6 +67,7 @@ typedef struct HEVCSEIFramePacking {
> >  int arrangement_type;
> >  int content_interpretation_type;
> >  int quincunx_subsampling;
> > +int current_frame_is_frame0_flag;
> >  } 

Re: [libav-devel] [PATCH] stereo3d: Support view type for frame sequence type

2017-10-03 Thread wm4
On Tue,  3 Oct 2017 09:26:39 -0400
Vittorio Giovara  wrote:

> Implement detection in h264 and hevc and insertion in framepack filter.
> 
> Signed-off-by: Vittorio Giovara 
> ---
>  doc/APIchanges |  3 +++
>  libavcodec/h264_sei.c  |  7 ---
>  libavcodec/h264_sei.h  |  1 +
>  libavcodec/h264_slice.c|  7 +++
>  libavcodec/hevc_sei.c  |  9 +
>  libavcodec/hevc_sei.h  |  1 +
>  libavcodec/hevcdec.c   |  7 +++
>  libavfilter/vf_framepack.c |  2 ++
>  libavutil/stereo3d.h   | 24 
>  libavutil/version.h|  2 +-
>  10 files changed, 55 insertions(+), 8 deletions(-)
> 
> diff --git a/doc/APIchanges b/doc/APIchanges
> index fa27007f44..b518b6307f 100644
> --- a/doc/APIchanges
> +++ b/doc/APIchanges
> @@ -13,6 +13,9 @@ libavutil: 2017-03-23
>  
>  API changes, most recent first:
>  
> +2017-xx-xx - xxx - lavu 56.7.0 - stereo3d.h
> +  Add view field to AVStereo3D structure and AVStereo3DView enum.
> +
>  2017-xx-xx - xxx - lavu 56.6.0 - pixdesc.h
>Add av_color_range_from_name(), av_color_primaries_from_name(),
>av_color_transfer_from_name(), av_color_space_from_name(), and
> diff --git a/libavcodec/h264_sei.c b/libavcodec/h264_sei.c
> index 03fca9017f..da5d33c36c 100644
> --- a/libavcodec/h264_sei.c
> +++ b/libavcodec/h264_sei.c
> @@ -314,10 +314,11 @@ static int 
> decode_frame_packing_arrangement(H264SEIFramePacking *h,
>  h->quincunx_subsampling   = get_bits1(gb);
>  h->content_interpretation_type= get_bits(gb, 6);
>  
> -// the following skips: spatial_flipping_flag, frame0_flipped_flag,
> -// field_views_flag, current_frame_is_frame0_flag,
> +// spatial_flipping_flag, frame0_flipped_flag, field_views_flag
> +skip_bits(gb, 3);
> +h->current_frame_is_frame0_flag = get_bits1(gb);
>  // frame0_self_contained_flag, frame1_self_contained_flag
> -skip_bits(gb, 6);
> +skip_bits(gb, 2);
>  
>  if (!h->quincunx_subsampling && h->arrangement_type != 5)
>  skip_bits(gb, 16);  // frame[01]_grid_position_[xy]
> diff --git a/libavcodec/h264_sei.h b/libavcodec/h264_sei.h
> index f6ac6034da..c3a19dd831 100644
> --- a/libavcodec/h264_sei.h
> +++ b/libavcodec/h264_sei.h
> @@ -108,6 +108,7 @@ typedef struct H264SEIFramePacking {
>  int arrangement_type;
>  int content_interpretation_type;
>  int quincunx_subsampling;
> +int current_frame_is_frame0_flag;
>  } H264SEIFramePacking;
>  
>  typedef struct H264SEIDisplayOrientation {
> diff --git a/libavcodec/h264_slice.c b/libavcodec/h264_slice.c
> index 5dd01d836e..1b968ebd50 100644
> --- a/libavcodec/h264_slice.c
> +++ b/libavcodec/h264_slice.c
> @@ -1112,6 +1112,13 @@ static int h264_export_frame_props(H264Context *h)
>  
>  if (fp->content_interpretation_type == 2)
>  stereo->flags = AV_STEREO3D_FLAG_INVERT;
> +
> +if (fp->arrangement_type == 5) {
> +if (fp->current_frame_is_frame0_flag)
> +stereo->view = AV_STEREO3D_VIEW_LEFT;
> +else
> +stereo->view = AV_STEREO3D_VIEW_RIGHT;
> +}
>  }
>  
>  if (h->sei.display_orientation.present &&
> diff --git a/libavcodec/hevc_sei.c b/libavcodec/hevc_sei.c
> index 0a5d4440bf..2bf170601d 100644
> --- a/libavcodec/hevc_sei.c
> +++ b/libavcodec/hevc_sei.c
> @@ -57,10 +57,11 @@ static int 
> decode_nal_sei_frame_packing_arrangement(HEVCSEIFramePacking *s, GetB
>  s->quincunx_subsampling   = get_bits1(gb);
>  s->content_interpretation_type= get_bits(gb, 6);
>  
> -// the following skips spatial_flipping_flag frame0_flipped_flag
> -// field_views_flag current_frame_is_frame0_flag
> -// frame0_self_contained_flag frame1_self_contained_flag
> -skip_bits(gb, 6);
> +// spatial_flipping_flag, frame0_flipped_flag, field_views_flag
> +skip_bits(gb, 3);
> +s->current_frame_is_frame0_flag = get_bits1(gb);
> +// frame0_self_contained_flag, frame1_self_contained_flag
> +skip_bits(gb, 2);
>  
>  if (!s->quincunx_subsampling && s->arrangement_type != 5)
>  skip_bits(gb, 16);  // frame[01]_grid_position_[xy]
> diff --git a/libavcodec/hevc_sei.h b/libavcodec/hevc_sei.h
> index e4aeac1fbe..8d4f5df69f 100644
> --- a/libavcodec/hevc_sei.h
> +++ b/libavcodec/hevc_sei.h
> @@ -67,6 +67,7 @@ typedef struct HEVCSEIFramePacking {
>  int arrangement_type;
>  int content_interpretation_type;
>  int quincunx_subsampling;
> +int current_frame_is_frame0_flag;
>  } HEVCSEIFramePacking;
>  
>  typedef struct HEVCSEIDisplayOrientation {
> diff --git a/libavcodec/hevcdec.c b/libavcodec/hevcdec.c
> index a1619cf4bd..f1d1c77497 100644
> --- a/libavcodec/hevcdec.c
> +++ b/libavcodec/hevcdec.c
> @@ -2397,6 +2397,13 @@ static int set_side_data(HEVCContext *s)
>  

[libav-devel] [PATCH] stereo3d: Support view type for frame sequence type

2017-10-03 Thread Vittorio Giovara
Implement detection in h264 and hevc and insertion in framepack filter.

Signed-off-by: Vittorio Giovara 
---
 doc/APIchanges |  3 +++
 libavcodec/h264_sei.c  |  7 ---
 libavcodec/h264_sei.h  |  1 +
 libavcodec/h264_slice.c|  7 +++
 libavcodec/hevc_sei.c  |  9 +
 libavcodec/hevc_sei.h  |  1 +
 libavcodec/hevcdec.c   |  7 +++
 libavfilter/vf_framepack.c |  2 ++
 libavutil/stereo3d.h   | 24 
 libavutil/version.h|  2 +-
 10 files changed, 55 insertions(+), 8 deletions(-)

diff --git a/doc/APIchanges b/doc/APIchanges
index fa27007f44..b518b6307f 100644
--- a/doc/APIchanges
+++ b/doc/APIchanges
@@ -13,6 +13,9 @@ libavutil: 2017-03-23
 
 API changes, most recent first:
 
+2017-xx-xx - xxx - lavu 56.7.0 - stereo3d.h
+  Add view field to AVStereo3D structure and AVStereo3DView enum.
+
 2017-xx-xx - xxx - lavu 56.6.0 - pixdesc.h
   Add av_color_range_from_name(), av_color_primaries_from_name(),
   av_color_transfer_from_name(), av_color_space_from_name(), and
diff --git a/libavcodec/h264_sei.c b/libavcodec/h264_sei.c
index 03fca9017f..da5d33c36c 100644
--- a/libavcodec/h264_sei.c
+++ b/libavcodec/h264_sei.c
@@ -314,10 +314,11 @@ static int 
decode_frame_packing_arrangement(H264SEIFramePacking *h,
 h->quincunx_subsampling   = get_bits1(gb);
 h->content_interpretation_type= get_bits(gb, 6);
 
-// the following skips: spatial_flipping_flag, frame0_flipped_flag,
-// field_views_flag, current_frame_is_frame0_flag,
+// spatial_flipping_flag, frame0_flipped_flag, field_views_flag
+skip_bits(gb, 3);
+h->current_frame_is_frame0_flag = get_bits1(gb);
 // frame0_self_contained_flag, frame1_self_contained_flag
-skip_bits(gb, 6);
+skip_bits(gb, 2);
 
 if (!h->quincunx_subsampling && h->arrangement_type != 5)
 skip_bits(gb, 16);  // frame[01]_grid_position_[xy]
diff --git a/libavcodec/h264_sei.h b/libavcodec/h264_sei.h
index f6ac6034da..c3a19dd831 100644
--- a/libavcodec/h264_sei.h
+++ b/libavcodec/h264_sei.h
@@ -108,6 +108,7 @@ typedef struct H264SEIFramePacking {
 int arrangement_type;
 int content_interpretation_type;
 int quincunx_subsampling;
+int current_frame_is_frame0_flag;
 } H264SEIFramePacking;
 
 typedef struct H264SEIDisplayOrientation {
diff --git a/libavcodec/h264_slice.c b/libavcodec/h264_slice.c
index 5dd01d836e..1b968ebd50 100644
--- a/libavcodec/h264_slice.c
+++ b/libavcodec/h264_slice.c
@@ -1112,6 +1112,13 @@ static int h264_export_frame_props(H264Context *h)
 
 if (fp->content_interpretation_type == 2)
 stereo->flags = AV_STEREO3D_FLAG_INVERT;
+
+if (fp->arrangement_type == 5) {
+if (fp->current_frame_is_frame0_flag)
+stereo->view = AV_STEREO3D_VIEW_LEFT;
+else
+stereo->view = AV_STEREO3D_VIEW_RIGHT;
+}
 }
 
 if (h->sei.display_orientation.present &&
diff --git a/libavcodec/hevc_sei.c b/libavcodec/hevc_sei.c
index 0a5d4440bf..2bf170601d 100644
--- a/libavcodec/hevc_sei.c
+++ b/libavcodec/hevc_sei.c
@@ -57,10 +57,11 @@ static int 
decode_nal_sei_frame_packing_arrangement(HEVCSEIFramePacking *s, GetB
 s->quincunx_subsampling   = get_bits1(gb);
 s->content_interpretation_type= get_bits(gb, 6);
 
-// the following skips spatial_flipping_flag frame0_flipped_flag
-// field_views_flag current_frame_is_frame0_flag
-// frame0_self_contained_flag frame1_self_contained_flag
-skip_bits(gb, 6);
+// spatial_flipping_flag, frame0_flipped_flag, field_views_flag
+skip_bits(gb, 3);
+s->current_frame_is_frame0_flag = get_bits1(gb);
+// frame0_self_contained_flag, frame1_self_contained_flag
+skip_bits(gb, 2);
 
 if (!s->quincunx_subsampling && s->arrangement_type != 5)
 skip_bits(gb, 16);  // frame[01]_grid_position_[xy]
diff --git a/libavcodec/hevc_sei.h b/libavcodec/hevc_sei.h
index e4aeac1fbe..8d4f5df69f 100644
--- a/libavcodec/hevc_sei.h
+++ b/libavcodec/hevc_sei.h
@@ -67,6 +67,7 @@ typedef struct HEVCSEIFramePacking {
 int arrangement_type;
 int content_interpretation_type;
 int quincunx_subsampling;
+int current_frame_is_frame0_flag;
 } HEVCSEIFramePacking;
 
 typedef struct HEVCSEIDisplayOrientation {
diff --git a/libavcodec/hevcdec.c b/libavcodec/hevcdec.c
index a1619cf4bd..f1d1c77497 100644
--- a/libavcodec/hevcdec.c
+++ b/libavcodec/hevcdec.c
@@ -2397,6 +2397,13 @@ static int set_side_data(HEVCContext *s)
 
 if (s->sei.frame_packing.content_interpretation_type == 2)
 stereo->flags = AV_STEREO3D_FLAG_INVERT;
+
+if (s->sei.frame_packing.arrangement_type == 5) {
+if (s->sei.frame_packing.current_frame_is_frame0_flag)
+stereo->view = AV_STEREO3D_VIEW_LEFT;
+else
+ 

Re: [libav-devel] [PATCH] h264_sei: handle stereoscopy frame sequential flags

2017-10-03 Thread Vittorio Giovara
On Tue, Oct 3, 2017 at 9:19 AM, Steve Lhomme  wrote:

> On Thu, Sep 21, 2017 at 7:15 PM, Vittorio Giovara
>  wrote:
> > On Thu, Sep 21, 2017 at 5:40 PM, Steve Lhomme  wrote:
> >
> >> On Thu, Sep 21, 2017 at 4:58 PM, Vittorio Giovara
> >>  wrote:
> >> > On Thu, Sep 21, 2017 at 4:03 PM, Steve Lhomme 
> wrote:
> >> >
> >> >> From: "Mohammed (Shaan) Huzaifa Danish" 
> >> >>
> >> >> ---
> >> >> fix previous patch skipping the wrong amount of bits
> >> >> ---
> >> >>  libavcodec/h264_sei.c   | 6 --
> >> >>  libavcodec/h264_sei.h   | 1 +
> >> >>  libavcodec/h264_slice.c | 2 ++
> >> >>  libavutil/stereo3d.h| 4 
> >> >>  4 files changed, 11 insertions(+), 2 deletions(-)
> >> >>
> >> >> diff --git a/libavcodec/h264_sei.c b/libavcodec/h264_sei.c
> >> >> index 03fca9017f..96ac427931 100644
> >> >> --- a/libavcodec/h264_sei.c
> >> >> +++ b/libavcodec/h264_sei.c
> >> >> @@ -315,9 +315,11 @@ static int decode_frame_packing_arrangeme
> >> nt(H264SEIFramePacking
> >> >> *h,
> >> >>  h->content_interpretation_type= get_bits(gb, 6);
> >> >>
> >> >>  // the following skips: spatial_flipping_flag,
> >> >> frame0_flipped_flag,
> >> >> -// field_views_flag, current_frame_is_frame0_flag,
> >> >> +// field_views_flag
> >> >> +skip_bits(gb, 3);
> >> >> +h->current_frame_is_frame0_flag   = get_bits1(gb);
> >> >>  // frame0_self_contained_flag, frame1_self_contained_flag
> >> >> -skip_bits(gb, 6);
> >> >> +skip_bits(gb, 2);
> >> >>
> >> >>  if (!h->quincunx_subsampling && h->arrangement_type != 5)
> >> >>  skip_bits(gb, 16);  // frame[01]_grid_position_[xy]
> >> >> diff --git a/libavcodec/h264_sei.h b/libavcodec/h264_sei.h
> >> >> index f6ac6034da..c3a19dd831 100644
> >> >> --- a/libavcodec/h264_sei.h
> >> >> +++ b/libavcodec/h264_sei.h
> >> >> @@ -108,6 +108,7 @@ typedef struct H264SEIFramePacking {
> >> >>  int arrangement_type;
> >> >>  int content_interpretation_type;
> >> >>  int quincunx_subsampling;
> >> >> +int current_frame_is_frame0_flag;
> >> >>  } H264SEIFramePacking;
> >> >>
> >> >>  typedef struct H264SEIDisplayOrientation {
> >> >> diff --git a/libavcodec/h264_slice.c b/libavcodec/h264_slice.c
> >> >> index 5dd01d836e..f5b78bfe29 100644
> >> >> --- a/libavcodec/h264_slice.c
> >> >> +++ b/libavcodec/h264_slice.c
> >> >> @@ -1112,6 +1112,8 @@ static int h264_export_frame_props(H264Context
> >> *h)
> >> >>
> >> >>  if (fp->content_interpretation_type == 2)
> >> >>  stereo->flags = AV_STEREO3D_FLAG_INVERT;
> >> >> +if (fp->current_frame_is_frame0_flag)
> >> >> +stereo->flags |= AV_STEREO3D_FLAG_FRAME0;
> >> >>  }
> >> >>
> >> >>  if (h->sei.display_orientation.present &&
> >> >> diff --git a/libavutil/stereo3d.h b/libavutil/stereo3d.h
> >> >> index 0fa9f63a2c..4c8ab5c40a 100644
> >> >> --- a/libavutil/stereo3d.h
> >> >> +++ b/libavutil/stereo3d.h
> >> >> @@ -146,6 +146,10 @@ enum AVStereo3DType {
> >> >>   * Inverted views, Right/Bottom represents the left view.
> >> >>   */
> >> >>  #define AV_STEREO3D_FLAG_INVERT (1 << 0)
> >> >> +/**
> >> >> + * This frame is frame0 (left view), otherwise it's the right view.
> >> >> + */
> >> >> +#define AV_STEREO3D_FLAG_FRAME0 (1 << 1)
> >> >>
> >> >
> >> > Hey Steve,
> >> > I would rather not expose a flag for something this specific (as it
> >> applies
> >> > to a single type only).
> >> > The name is also peculiar, and confusing, the left view has always
> >> priority
> >> > so that should be the default variant (ie no flag).
> >>
> >> If left is the default, how do you signal that it's the right eye ?
> >>
> >
> > You can keep track of the decoded frames, if frame_num%2 == 1 it means
> > you're on a right view.
> >
> >
> >> Given in all other cases where this SEI is not present you don't know
> >> if you can assume it's there or not ?
> >
> >
> > if you want, given that the left view has priority, you could do
> something
> > like
> > if packing_type == 5
> >   if flag0 == 0
> > flags |= invert
> >   else
> > flags = 0
> >
> >
> >> The flag signals that this frame is the left eye and the one coming
> >> next is the right eye.
> >>
> >
> > I'm not sure that's the best approach because this flag would be for a
> very
> > specific packing type only, and not generic (like the inverted one).
>
> What's the status on this ? Weren't you going to submit a patch to set
> a flag for that mode only ? Should I submit it ?


I forgot about it, I'll send it right away.
-- 
Vittorio
___
libav-devel mailing list
libav-devel@libav.org
https://lists.libav.org/mailman/listinfo/libav-devel

Re: [libav-devel] [PATCH] h264_sei: handle stereoscopy frame sequential flags

2017-10-03 Thread Steve Lhomme
On Thu, Sep 21, 2017 at 7:15 PM, Vittorio Giovara
 wrote:
> On Thu, Sep 21, 2017 at 5:40 PM, Steve Lhomme  wrote:
>
>> On Thu, Sep 21, 2017 at 4:58 PM, Vittorio Giovara
>>  wrote:
>> > On Thu, Sep 21, 2017 at 4:03 PM, Steve Lhomme  wrote:
>> >
>> >> From: "Mohammed (Shaan) Huzaifa Danish" 
>> >>
>> >> ---
>> >> fix previous patch skipping the wrong amount of bits
>> >> ---
>> >>  libavcodec/h264_sei.c   | 6 --
>> >>  libavcodec/h264_sei.h   | 1 +
>> >>  libavcodec/h264_slice.c | 2 ++
>> >>  libavutil/stereo3d.h| 4 
>> >>  4 files changed, 11 insertions(+), 2 deletions(-)
>> >>
>> >> diff --git a/libavcodec/h264_sei.c b/libavcodec/h264_sei.c
>> >> index 03fca9017f..96ac427931 100644
>> >> --- a/libavcodec/h264_sei.c
>> >> +++ b/libavcodec/h264_sei.c
>> >> @@ -315,9 +315,11 @@ static int decode_frame_packing_arrangeme
>> nt(H264SEIFramePacking
>> >> *h,
>> >>  h->content_interpretation_type= get_bits(gb, 6);
>> >>
>> >>  // the following skips: spatial_flipping_flag,
>> >> frame0_flipped_flag,
>> >> -// field_views_flag, current_frame_is_frame0_flag,
>> >> +// field_views_flag
>> >> +skip_bits(gb, 3);
>> >> +h->current_frame_is_frame0_flag   = get_bits1(gb);
>> >>  // frame0_self_contained_flag, frame1_self_contained_flag
>> >> -skip_bits(gb, 6);
>> >> +skip_bits(gb, 2);
>> >>
>> >>  if (!h->quincunx_subsampling && h->arrangement_type != 5)
>> >>  skip_bits(gb, 16);  // frame[01]_grid_position_[xy]
>> >> diff --git a/libavcodec/h264_sei.h b/libavcodec/h264_sei.h
>> >> index f6ac6034da..c3a19dd831 100644
>> >> --- a/libavcodec/h264_sei.h
>> >> +++ b/libavcodec/h264_sei.h
>> >> @@ -108,6 +108,7 @@ typedef struct H264SEIFramePacking {
>> >>  int arrangement_type;
>> >>  int content_interpretation_type;
>> >>  int quincunx_subsampling;
>> >> +int current_frame_is_frame0_flag;
>> >>  } H264SEIFramePacking;
>> >>
>> >>  typedef struct H264SEIDisplayOrientation {
>> >> diff --git a/libavcodec/h264_slice.c b/libavcodec/h264_slice.c
>> >> index 5dd01d836e..f5b78bfe29 100644
>> >> --- a/libavcodec/h264_slice.c
>> >> +++ b/libavcodec/h264_slice.c
>> >> @@ -1112,6 +1112,8 @@ static int h264_export_frame_props(H264Context
>> *h)
>> >>
>> >>  if (fp->content_interpretation_type == 2)
>> >>  stereo->flags = AV_STEREO3D_FLAG_INVERT;
>> >> +if (fp->current_frame_is_frame0_flag)
>> >> +stereo->flags |= AV_STEREO3D_FLAG_FRAME0;
>> >>  }
>> >>
>> >>  if (h->sei.display_orientation.present &&
>> >> diff --git a/libavutil/stereo3d.h b/libavutil/stereo3d.h
>> >> index 0fa9f63a2c..4c8ab5c40a 100644
>> >> --- a/libavutil/stereo3d.h
>> >> +++ b/libavutil/stereo3d.h
>> >> @@ -146,6 +146,10 @@ enum AVStereo3DType {
>> >>   * Inverted views, Right/Bottom represents the left view.
>> >>   */
>> >>  #define AV_STEREO3D_FLAG_INVERT (1 << 0)
>> >> +/**
>> >> + * This frame is frame0 (left view), otherwise it's the right view.
>> >> + */
>> >> +#define AV_STEREO3D_FLAG_FRAME0 (1 << 1)
>> >>
>> >
>> > Hey Steve,
>> > I would rather not expose a flag for something this specific (as it
>> applies
>> > to a single type only).
>> > The name is also peculiar, and confusing, the left view has always
>> priority
>> > so that should be the default variant (ie no flag).
>>
>> If left is the default, how do you signal that it's the right eye ?
>>
>
> You can keep track of the decoded frames, if frame_num%2 == 1 it means
> you're on a right view.
>
>
>> Given in all other cases where this SEI is not present you don't know
>> if you can assume it's there or not ?
>
>
> if you want, given that the left view has priority, you could do something
> like
> if packing_type == 5
>   if flag0 == 0
> flags |= invert
>   else
> flags = 0
>
>
>> The flag signals that this frame is the left eye and the one coming
>> next is the right eye.
>>
>
> I'm not sure that's the best approach because this flag would be for a very
> specific packing type only, and not generic (like the inverted one).

What's the status on this ? Weren't you going to submit a patch to set
a flag for that mode only ? Should I submit it ?

> Do you have a sample available?
> --
> Vittorio
> ___
> libav-devel mailing list
> libav-devel@libav.org
> https://lists.libav.org/mailman/listinfo/libav-devel
___
libav-devel mailing list
libav-devel@libav.org
https://lists.libav.org/mailman/listinfo/libav-devel