Re: [FFmpeg-devel] [PATCH 2/2] libopenh264: Support building with the 1.6 release

2016-07-26 Thread Michael Niedermayer
On Tue, Jul 26, 2016 at 09:31:18PM +0300, Martin Storsjö wrote:
> This fixes trac issue #5417.
> 
> This is cherry-picked from libav commit
> d825b1a5306576dcd0553b7d0d24a3a46ad92864.
> ---
> Updated the commit message to mention the ticket number.
> ---
>  libavcodec/libopenh264dec.c |  2 ++
>  libavcodec/libopenh264enc.c | 26 --
>  2 files changed, 26 insertions(+), 2 deletions(-)

LGTM

thanks

[...]
-- 
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

The real ebay dictionary, page 3
"Rare item" - "Common item with rare defect or maybe just a lie"
"Professional" - "'Toy' made in china, not functional except as doorstop"
"Experts will know" - "The seller hopes you are not an expert"


signature.asc
Description: Digital signature
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


[FFmpeg-devel] [PATCH 2/2] libopenh264: Support building with the 1.6 release

2016-07-26 Thread Martin Storsjö
This fixes trac issue #5417.

This is cherry-picked from libav commit
d825b1a5306576dcd0553b7d0d24a3a46ad92864.
---
Updated the commit message to mention the ticket number.
---
 libavcodec/libopenh264dec.c |  2 ++
 libavcodec/libopenh264enc.c | 26 --
 2 files changed, 26 insertions(+), 2 deletions(-)

diff --git a/libavcodec/libopenh264dec.c b/libavcodec/libopenh264dec.c
index f642082..6af60af 100644
--- a/libavcodec/libopenh264dec.c
+++ b/libavcodec/libopenh264dec.c
@@ -90,7 +90,9 @@ static av_cold int svc_decode_init(AVCodecContext *avctx)
 (*s->decoder)->SetOption(s->decoder, DECODER_OPTION_TRACE_CALLBACK, (void 
*)&callback_function);
 (*s->decoder)->SetOption(s->decoder, 
DECODER_OPTION_TRACE_CALLBACK_CONTEXT, (void *)&avctx);
 
+#if !OPENH264_VER_AT_LEAST(1, 6)
 param.eOutputColorFormat = videoFormatI420;
+#endif
 param.eEcActiveIdc   = ERROR_CON_DISABLE;
 param.sVideoProperty.eVideoBsType = VIDEO_BITSTREAM_DEFAULT;
 
diff --git a/libavcodec/libopenh264enc.c b/libavcodec/libopenh264enc.c
index d27fc41..07af31d 100644
--- a/libavcodec/libopenh264enc.c
+++ b/libavcodec/libopenh264enc.c
@@ -33,6 +33,10 @@
 #include "internal.h"
 #include "libopenh264.h"
 
+#if !OPENH264_VER_AT_LEAST(1, 6)
+#define SM_SIZELIMITED_SLICE SM_DYN_SLICE
+#endif
+
 typedef struct SVCContext {
 const AVClass *av_class;
 ISVCEncoder *encoder;
@@ -48,11 +52,20 @@ typedef struct SVCContext {
 #define OFFSET(x) offsetof(SVCContext, x)
 #define VE AV_OPT_FLAG_VIDEO_PARAM | AV_OPT_FLAG_ENCODING_PARAM
 static const AVOption options[] = {
+#if OPENH264_VER_AT_LEAST(1, 6)
+{ "slice_mode", "set slice mode", OFFSET(slice_mode), AV_OPT_TYPE_INT, { 
.i64 = SM_FIXEDSLCNUM_SLICE }, SM_SINGLE_SLICE, SM_RESERVED, VE, "slice_mode" },
+#else
 { "slice_mode", "set slice mode", OFFSET(slice_mode), AV_OPT_TYPE_INT, { 
.i64 = SM_AUTO_SLICE }, SM_SINGLE_SLICE, SM_RESERVED, VE, "slice_mode" },
+#endif
 { "fixed", "a fixed number of slices", 0, AV_OPT_TYPE_CONST, { .i64 = 
SM_FIXEDSLCNUM_SLICE }, 0, 0, VE, "slice_mode" },
+#if OPENH264_VER_AT_LEAST(1, 6)
+{ "dyn", "Size limited (compatibility name)", 0, AV_OPT_TYPE_CONST, { 
.i64 = SM_SIZELIMITED_SLICE }, 0, 0, VE, "slice_mode" },
+{ "sizelimited", "Size limited", 0, AV_OPT_TYPE_CONST, { .i64 = 
SM_SIZELIMITED_SLICE }, 0, 0, VE, "slice_mode" },
+#else
 { "rowmb", "one slice per row of macroblocks", 0, AV_OPT_TYPE_CONST, { 
.i64 = SM_ROWMB_SLICE }, 0, 0, VE, "slice_mode" },
 { "auto", "automatic number of slices according to number of threads", 
0, AV_OPT_TYPE_CONST, { .i64 = SM_AUTO_SLICE }, 0, 0, VE, "slice_mode" },
 { "dyn", "Dynamic slicing", 0, AV_OPT_TYPE_CONST, { .i64 = 
SM_DYN_SLICE }, 0, 0, VE, "slice_mode" },
+#endif
 { "loopfilter", "enable loop filter", OFFSET(loopfilter), AV_OPT_TYPE_INT, 
{ .i64 = 1 }, 0, 1, VE },
 { "profile", "set profile restrictions", OFFSET(profile), 
AV_OPT_TYPE_STRING, { .str = NULL }, 0, 0, VE },
 { "max_nal_size", "set maximum NAL size in bytes", OFFSET(max_nal_size), 
AV_OPT_TYPE_INT, { .i64 = 0 }, 0, INT_MAX, VE },
@@ -159,15 +172,24 @@ FF_ENABLE_DEPRECATION_WARNINGS
 s->slice_mode = SM_FIXEDSLCNUM_SLICE;
 
 if (s->max_nal_size)
-s->slice_mode = SM_DYN_SLICE;
+s->slice_mode = SM_SIZELIMITED_SLICE;
 
+#if OPENH264_VER_AT_LEAST(1, 6)
+param.sSpatialLayers[0].sSliceArgument.uiSliceMode = s->slice_mode;
+param.sSpatialLayers[0].sSliceArgument.uiSliceNum  = avctx->slices;
+#else
 param.sSpatialLayers[0].sSliceCfg.uiSliceMode   = 
s->slice_mode;
 param.sSpatialLayers[0].sSliceCfg.sSliceArgument.uiSliceNum = 
avctx->slices;
+#endif
 
-if (s->slice_mode == SM_DYN_SLICE) {
+if (s->slice_mode == SM_SIZELIMITED_SLICE) {
 if (s->max_nal_size){
 param.uiMaxNalSize = s->max_nal_size;
+#if OPENH264_VER_AT_LEAST(1, 6)
+param.sSpatialLayers[0].sSliceArgument.uiSliceSizeConstraint = 
s->max_nal_size;
+#else
 
param.sSpatialLayers[0].sSliceCfg.sSliceArgument.uiSliceSizeConstraint = 
s->max_nal_size;
+#endif
 } else {
 av_log(avctx, AV_LOG_ERROR, "Invalid -max_nal_size, "
"specify a valid max_nal_size to use -slice_mode dyn\n");
-- 
2.7.4 (Apple Git-66)

___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH 2/2] libopenh264: Support building with the 1.6 release

2016-07-26 Thread Carl Eugen Hoyos
Martin Storsjö  martin.st> writes:

> This is cherry-picked from libav commit
> d825b1a5306576dcd0553b7d0d24a3a46ad92864.

Please mention ticket #5417 in the commit message, 
push if it works for you, this was requested often.

Carl Eugen
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


[FFmpeg-devel] [PATCH 2/2] libopenh264: Support building with the 1.6 release

2016-07-26 Thread Martin Storsjö
This is cherry-picked from libav commit
d825b1a5306576dcd0553b7d0d24a3a46ad92864.
---
 libavcodec/libopenh264dec.c |  2 ++
 libavcodec/libopenh264enc.c | 26 --
 2 files changed, 26 insertions(+), 2 deletions(-)

diff --git a/libavcodec/libopenh264dec.c b/libavcodec/libopenh264dec.c
index 8388e4e..80dff4c 100644
--- a/libavcodec/libopenh264dec.c
+++ b/libavcodec/libopenh264dec.c
@@ -90,7 +90,9 @@ static av_cold int svc_decode_init(AVCodecContext *avctx)
 (*s->decoder)->SetOption(s->decoder, DECODER_OPTION_TRACE_CALLBACK, (void 
*)&callback_function);
 (*s->decoder)->SetOption(s->decoder, 
DECODER_OPTION_TRACE_CALLBACK_CONTEXT, (void *)&avctx);
 
+#if !OPENH264_VER_AT_LEAST(1, 6)
 param.eOutputColorFormat = videoFormatI420;
+#endif
 param.eEcActiveIdc   = ERROR_CON_DISABLE;
 param.sVideoProperty.eVideoBsType = VIDEO_BITSTREAM_DEFAULT;
 
diff --git a/libavcodec/libopenh264enc.c b/libavcodec/libopenh264enc.c
index d27fc41..07af31d 100644
--- a/libavcodec/libopenh264enc.c
+++ b/libavcodec/libopenh264enc.c
@@ -33,6 +33,10 @@
 #include "internal.h"
 #include "libopenh264.h"
 
+#if !OPENH264_VER_AT_LEAST(1, 6)
+#define SM_SIZELIMITED_SLICE SM_DYN_SLICE
+#endif
+
 typedef struct SVCContext {
 const AVClass *av_class;
 ISVCEncoder *encoder;
@@ -48,11 +52,20 @@ typedef struct SVCContext {
 #define OFFSET(x) offsetof(SVCContext, x)
 #define VE AV_OPT_FLAG_VIDEO_PARAM | AV_OPT_FLAG_ENCODING_PARAM
 static const AVOption options[] = {
+#if OPENH264_VER_AT_LEAST(1, 6)
+{ "slice_mode", "set slice mode", OFFSET(slice_mode), AV_OPT_TYPE_INT, { 
.i64 = SM_FIXEDSLCNUM_SLICE }, SM_SINGLE_SLICE, SM_RESERVED, VE, "slice_mode" },
+#else
 { "slice_mode", "set slice mode", OFFSET(slice_mode), AV_OPT_TYPE_INT, { 
.i64 = SM_AUTO_SLICE }, SM_SINGLE_SLICE, SM_RESERVED, VE, "slice_mode" },
+#endif
 { "fixed", "a fixed number of slices", 0, AV_OPT_TYPE_CONST, { .i64 = 
SM_FIXEDSLCNUM_SLICE }, 0, 0, VE, "slice_mode" },
+#if OPENH264_VER_AT_LEAST(1, 6)
+{ "dyn", "Size limited (compatibility name)", 0, AV_OPT_TYPE_CONST, { 
.i64 = SM_SIZELIMITED_SLICE }, 0, 0, VE, "slice_mode" },
+{ "sizelimited", "Size limited", 0, AV_OPT_TYPE_CONST, { .i64 = 
SM_SIZELIMITED_SLICE }, 0, 0, VE, "slice_mode" },
+#else
 { "rowmb", "one slice per row of macroblocks", 0, AV_OPT_TYPE_CONST, { 
.i64 = SM_ROWMB_SLICE }, 0, 0, VE, "slice_mode" },
 { "auto", "automatic number of slices according to number of threads", 
0, AV_OPT_TYPE_CONST, { .i64 = SM_AUTO_SLICE }, 0, 0, VE, "slice_mode" },
 { "dyn", "Dynamic slicing", 0, AV_OPT_TYPE_CONST, { .i64 = 
SM_DYN_SLICE }, 0, 0, VE, "slice_mode" },
+#endif
 { "loopfilter", "enable loop filter", OFFSET(loopfilter), AV_OPT_TYPE_INT, 
{ .i64 = 1 }, 0, 1, VE },
 { "profile", "set profile restrictions", OFFSET(profile), 
AV_OPT_TYPE_STRING, { .str = NULL }, 0, 0, VE },
 { "max_nal_size", "set maximum NAL size in bytes", OFFSET(max_nal_size), 
AV_OPT_TYPE_INT, { .i64 = 0 }, 0, INT_MAX, VE },
@@ -159,15 +172,24 @@ FF_ENABLE_DEPRECATION_WARNINGS
 s->slice_mode = SM_FIXEDSLCNUM_SLICE;
 
 if (s->max_nal_size)
-s->slice_mode = SM_DYN_SLICE;
+s->slice_mode = SM_SIZELIMITED_SLICE;
 
+#if OPENH264_VER_AT_LEAST(1, 6)
+param.sSpatialLayers[0].sSliceArgument.uiSliceMode = s->slice_mode;
+param.sSpatialLayers[0].sSliceArgument.uiSliceNum  = avctx->slices;
+#else
 param.sSpatialLayers[0].sSliceCfg.uiSliceMode   = 
s->slice_mode;
 param.sSpatialLayers[0].sSliceCfg.sSliceArgument.uiSliceNum = 
avctx->slices;
+#endif
 
-if (s->slice_mode == SM_DYN_SLICE) {
+if (s->slice_mode == SM_SIZELIMITED_SLICE) {
 if (s->max_nal_size){
 param.uiMaxNalSize = s->max_nal_size;
+#if OPENH264_VER_AT_LEAST(1, 6)
+param.sSpatialLayers[0].sSliceArgument.uiSliceSizeConstraint = 
s->max_nal_size;
+#else
 
param.sSpatialLayers[0].sSliceCfg.sSliceArgument.uiSliceSizeConstraint = 
s->max_nal_size;
+#endif
 } else {
 av_log(avctx, AV_LOG_ERROR, "Invalid -max_nal_size, "
"specify a valid max_nal_size to use -slice_mode dyn\n");
-- 
2.7.4 (Apple Git-66)

___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel