Mark Thompson:
> ---
> libavcodec/cbs_h264.c | 47 +++++++++++++++++++++++++++++++++++++++++++
> libavcodec/cbs_h264.h | 8 ++++++++
> 2 files changed, 55 insertions(+)
>
> diff --git a/libavcodec/cbs_h264.c b/libavcodec/cbs_h264.c
> index 75759c7f25..cc52f68550 100644
> --- a/libavcodec/cbs_h264.c
> +++ b/libavcodec/cbs_h264.c
> @@ -16,6 +16,8 @@
> * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
> USA
> */
>
> +#include "libavutil/stereo3d.h"
> +
> #include "cbs_h264.h"
>
> int ff_cbs_h264_add_sei_message(CodedBitstreamContext *ctx,
> @@ -104,3 +106,48 @@ void
> ff_cbs_h264_delete_sei_message(CodedBitstreamContext *ctx,
> (sei->payload_count - position) * sizeof(*sei->payload));
> }
> }
> +
> +void
> ff_cbs_h264_fill_sei_frame_packing_arrangement(H264RawSEIFramePackingArrangement
> *fp,
> + const AVStereo3D *st)
> +{
> + static const int type_map[] = {
Why not uint8_t instead of int? After all,
frame_packing_arrangement_type is an uint8_t.
> + [AV_STEREO3D_2D] = 6,
> + [AV_STEREO3D_SIDEBYSIDE] = 3,
> + [AV_STEREO3D_TOPBOTTOM] = 4,
> + [AV_STEREO3D_FRAMESEQUENCE] = 5,
> + [AV_STEREO3D_CHECKERBOARD] = 0,
> + [AV_STEREO3D_SIDEBYSIDE_QUINCUNX] = 3,
> + [AV_STEREO3D_LINES] = 2,
> + [AV_STEREO3D_COLUMNS] = 1,
> + };
> +
> + memset(fp, 0, sizeof(*fp));
> +
> + if (st->type >= FF_ARRAY_ELEMS(type_map))
> + return;
> +
> + fp->frame_packing_arrangement_type = type_map[st->type];
> +
> + fp->quincunx_sampling_flag =
> + st->type == AV_STEREO3D_CHECKERBOARD ||
> + st->type == AV_STEREO3D_SIDEBYSIDE_QUINCUNX;
> +
> + if (st->type == AV_STEREO3D_2D)
> + fp->content_interpretation_type = 0;
> + else if (st->flags & AV_STEREO3D_FLAG_INVERT)
> + fp->content_interpretation_type = 2;
> + else
> + fp->content_interpretation_type = 1;
> +
> + if (st->type == AV_STEREO3D_FRAMESEQUENCE) {
> + if (st->flags & AV_STEREO3D_FLAG_INVERT)
> + fp->current_frame_is_frame0_flag =
> + st->view == AV_STEREO3D_VIEW_RIGHT;
> + else
> + fp->current_frame_is_frame0_flag =
> + st->view == AV_STEREO3D_VIEW_LEFT;
> + }
> +
> + fp->frame_packing_arrangement_repetition_period =
> + st->type != AV_STEREO3D_FRAMESEQUENCE;
> +}
> diff --git a/libavcodec/cbs_h264.h b/libavcodec/cbs_h264.h
> index 512674ec07..76211c976b 100644
> --- a/libavcodec/cbs_h264.h
> +++ b/libavcodec/cbs_h264.h
> @@ -525,4 +525,12 @@ void
> ff_cbs_h264_delete_sei_message(CodedBitstreamContext *ctx,
> CodedBitstreamUnit *nal_unit,
> int position);
>
> +struct AVStereo3D;
> +/**
> + * Fill an SEI Frame Packing Arrangement structure with values derived from
> + * the AVStereo3D side-data structure.
> + */
> +void
> ff_cbs_h264_fill_sei_frame_packing_arrangement(H264RawSEIFramePackingArrangement
> *fp,
> + const struct AVStereo3D
> *st);
> +
> #endif /* AVCODEC_CBS_H264_H */
>
_______________________________________________
ffmpeg-devel mailing list
[email protected]
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
[email protected] with subject "unsubscribe".