Re: [FFmpeg-devel] [PATCH] Save FFmpeg colorspace info in openh264 video files.

2016-12-13 Thread Michael Niedermayer
On Fri, Dec 09, 2016 at 01:15:14PM -0500, Gregory J. Wolfe wrote:
> As of version 1.6, libopenh264 saves (in the output video file)
> information about the color primaries, transfer characteristics,
> and color matrix used when the video pixel data was created.
> This patch sets the required libopenh264 data structures using
> the FFmpeg colorspace information so that video players will
> know how to properly decode video files created using FFmpeg
> and libopenh264.
> 
> Signed-off-by: Gregory J. Wolfe 
> ---
>  libavcodec/libopenh264enc.c | 61 
> +
>  1 file changed, 61 insertions(+)

as with the other patch the commit message should start with a
summary line that starts with the part that is changed

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

Its not that you shouldnt use gotos but rather that you should write
readable code and code with gotos often but not always is less readable


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


[FFmpeg-devel] [PATCH] Save FFmpeg colorspace info in openh264 video files.

2016-12-09 Thread Gregory J. Wolfe
As of version 1.6, libopenh264 saves (in the output video file)
information about the color primaries, transfer characteristics,
and color matrix used when the video pixel data was created.
This patch sets the required libopenh264 data structures using
the FFmpeg colorspace information so that video players will
know how to properly decode video files created using FFmpeg
and libopenh264.

Signed-off-by: Gregory J. Wolfe 
---
 libavcodec/libopenh264enc.c | 61 +
 1 file changed, 61 insertions(+)

diff --git a/libavcodec/libopenh264enc.c b/libavcodec/libopenh264enc.c
index e84de27..d8a7ea3 100644
--- a/libavcodec/libopenh264enc.c
+++ b/libavcodec/libopenh264enc.c
@@ -205,6 +205,67 @@ FF_ENABLE_DEPRECATION_WARNINGS
 }
 }
 
+#if OPENH264_VER_AT_LEAST(1, 6)
+// set video signal type information
+param.sSpatialLayers[0].bVideoSignalTypePresent = true;
+param.sSpatialLayers[0].uiVideoFormat = VF_UNDEF; // default; choices are 
VF_: COMPONENT, PAL, NTSC, SECAM, MAC, UNDEF
+param.sSpatialLayers[0].bFullRange = avctx->color_range == 
AVCOL_RANGE_JPEG;
+param.sSpatialLayers[0].bColorDescriptionPresent = true;
+// These switches are intended to filter out all but the values supported 
by libopenh264.
+// An unsupported value causes the associated quantity to be set to 
"unspecified" and a
+// warning message to be issued.
+switch (avctx->color_primaries) {
+case AVCOL_PRI_BT709:param.sSpatialLayers[0].uiColorPrimaries  
= CP_BT709; break;
+case AVCOL_PRI_UNSPECIFIED:  param.sSpatialLayers[0].uiColorPrimaries  
= CP_UNDEF; break;
+case AVCOL_PRI_BT470M:   param.sSpatialLayers[0].uiColorPrimaries  
= CP_BT470M;break;
+case AVCOL_PRI_BT470BG:  param.sSpatialLayers[0].uiColorPrimaries  
= CP_BT470BG;   break;
+case AVCOL_PRI_SMPTE170M:param.sSpatialLayers[0].uiColorPrimaries  
= CP_SMPTE170M; break;
+case AVCOL_PRI_SMPTE240M:param.sSpatialLayers[0].uiColorPrimaries  
= CP_SMPTE240M; break;
+case AVCOL_PRI_FILM: param.sSpatialLayers[0].uiColorPrimaries  
= CP_FILM;  break;
+case AVCOL_PRI_BT2020:   param.sSpatialLayers[0].uiColorPrimaries  
= CP_BT2020;break;
+default: param.sSpatialLayers[0].uiColorPrimaries  
= CP_UNDEF;
+av_log(avctx, AV_LOG_WARNING, "Unsupported color primaries value %d 
was specified;" 
+" color primaries value has been set to \"unspecified\"\n", 
avctx->color_primaries);
+break;
+}
+switch (avctx->color_trc) {
+case AVCOL_TRC_BT709:
param.sSpatialLayers[0].uiTransferCharacteristics = TRC_BT709;break;
+case AVCOL_TRC_UNSPECIFIED:  
param.sSpatialLayers[0].uiTransferCharacteristics = TRC_UNDEF;break;
+case AVCOL_TRC_GAMMA22:  
param.sSpatialLayers[0].uiTransferCharacteristics = TRC_BT470M;   break;
+case AVCOL_TRC_GAMMA28:  
param.sSpatialLayers[0].uiTransferCharacteristics = TRC_BT470BG;  break;
+case AVCOL_TRC_SMPTE170M:
param.sSpatialLayers[0].uiTransferCharacteristics = TRC_SMPTE170M;break;
+case AVCOL_TRC_SMPTE240M:
param.sSpatialLayers[0].uiTransferCharacteristics = TRC_SMPTE240M;break;
+case AVCOL_TRC_LINEAR:   
param.sSpatialLayers[0].uiTransferCharacteristics = TRC_LINEAR;   break;
+case AVCOL_TRC_LOG:  
param.sSpatialLayers[0].uiTransferCharacteristics = TRC_LOG100;   break;
+case AVCOL_TRC_LOG_SQRT: 
param.sSpatialLayers[0].uiTransferCharacteristics = TRC_LOG316;   break;
+case AVCOL_TRC_IEC61966_2_4: 
param.sSpatialLayers[0].uiTransferCharacteristics = TRC_IEC61966_2_4; break;
+case AVCOL_TRC_BT1361_ECG:   
param.sSpatialLayers[0].uiTransferCharacteristics = TRC_BT1361E;  break;
+case AVCOL_TRC_IEC61966_2_1: 
param.sSpatialLayers[0].uiTransferCharacteristics = TRC_IEC61966_2_1; break;
+case AVCOL_TRC_BT2020_10:
param.sSpatialLayers[0].uiTransferCharacteristics = TRC_BT2020_10;break;
+case AVCOL_TRC_BT2020_12:
param.sSpatialLayers[0].uiTransferCharacteristics = TRC_BT2020_12;break;
+default: 
param.sSpatialLayers[0].uiTransferCharacteristics = TRC_UNDEF;
+av_log(avctx, AV_LOG_WARNING, "Unsupported transfer characteristics 
value %d was specified;" 
+" transfer characteristics value has been set to 
\"unspecified\"\n", avctx->color_trc);
+break;
+}
+switch (avctx->colorspace) {
+case AVCOL_SPC_RGB:  param.sSpatialLayers[0].uiColorMatrix 
= CM_GBR;   break;
+case AVCOL_SPC_BT709:param.sSpatialLayers[0].uiColorMatrix 
= CM_BT709; break;
+case AVCOL_SPC_UNSPECIFIED:  param.sSpatialLayers[0].uiColorMatrix 
= CM_UNDEF; break;
+case AVCOL_SPC_FCC:

Re: [FFmpeg-devel] [PATCH] Save FFmpeg colorspace info in openh264 video files.

2016-12-02 Thread Gregory J Wolfe
> From: ffmpeg-devel [mailto:ffmpeg-devel-boun...@ffmpeg.org] On
> Behalf Of James Almer
> Sent: Friday, December 02, 2016 9:31 AM
> 
> On 12/1/2016 6:26 PM, Gregory J. Wolfe wrote:
> > As of version 1.6, libopenh264 saves (in the output video file)
> > information about the color primaries, transfer characteristics,
> > and color matrix used when the video pixel data was created.
> > This patch sets the required libopenh264 data structures using
> > the FFmpeg colorspace information so that video players will
> > know how to properly decode video files created using FFmpeg
> > and libopenh264.
> >
> > Signed-off-by: Gregory J. Wolfe 
> > ---
> >  libavcodec/libopenh264enc.c | 49
> +
> >  1 file changed, 49 insertions(+)
> >
> > diff --git a/libavcodec/libopenh264enc.c
> b/libavcodec/libopenh264enc.c
> > index e84de27..3b019b8 100644
> > --- a/libavcodec/libopenh264enc.c
> > +++ b/libavcodec/libopenh264enc.c
> > @@ -205,6 +205,55 @@ FF_ENABLE_DEPRECATION_WARNINGS
> >  }
> >  }
> >
> > +#if OPENH264_VER_AT_LEAST(1, 6)
> > +// set video signal type information
> > +param.sSpatialLayers[0].bVideoSignalTypePresent = true;
> > +param.sSpatialLayers[0].uiVideoFormat = VF_UNDEF; // default;
> choices are VF_: COMPONENT, PAL, NTSC, SECAM, MAC, UNDEF
> > +param.sSpatialLayers[0].bFullRange = avctx->color_range ==
> AVCOL_RANGE_JPEG;
> > +param.sSpatialLayers[0].bColorDescriptionPresent = true;
> > +switch (avctx->color_primaries) {
> > +case AVCOL_PRI_BT709:
> param.sSpatialLayers[0].uiColorPrimaries  = CP_BT709; break;
> > +case AVCOL_PRI_UNSPECIFIED:
> param.sSpatialLayers[0].uiColorPrimaries  = CP_UNDEF; break;
> > +case AVCOL_PRI_BT470M:
> param.sSpatialLayers[0].uiColorPrimaries  = CP_BT470M;break;
> > +case AVCOL_PRI_BT470BG:
> param.sSpatialLayers[0].uiColorPrimaries  = CP_BT470BG;   break;
> > +case AVCOL_PRI_SMPTE170M:
> param.sSpatialLayers[0].uiColorPrimaries  = CP_SMPTE170M;
> break;
> > +case AVCOL_PRI_SMPTE240M:
> param.sSpatialLayers[0].uiColorPrimaries  = CP_SMPTE240M;
> break;
> > +case AVCOL_PRI_FILM:
> param.sSpatialLayers[0].uiColorPrimaries  = CP_FILM;  break;
> > +case AVCOL_PRI_BT2020:
> param.sSpatialLayers[0].uiColorPrimaries  = CP_BT2020;break;
> > +default: param.sSpatialLayers[0].uiColorPrimaries  
> > =
> CP_UNDEF; break;
> > +}
> > +switch (avctx->color_trc) {
> > +case AVCOL_TRC_BT709:
> param.sSpatialLayers[0].uiTransferCharacteristics = TRC_BT709;
> break;
> > +case AVCOL_TRC_UNSPECIFIED:
> param.sSpatialLayers[0].uiTransferCharacteristics = TRC_UNDEF;
> break;
> > +case AVCOL_TRC_GAMMA22:
> param.sSpatialLayers[0].uiTransferCharacteristics = TRC_BT470M;
> break;
> > +case AVCOL_TRC_GAMMA28:
> param.sSpatialLayers[0].uiTransferCharacteristics = TRC_BT470BG;
> break;
> > +case AVCOL_TRC_SMPTE170M:
> param.sSpatialLayers[0].uiTransferCharacteristics = TRC_SMPTE170M;
> break;
> > +case AVCOL_TRC_SMPTE240M:
> param.sSpatialLayers[0].uiTransferCharacteristics = TRC_SMPTE240M;
> break;
> > +case AVCOL_TRC_LINEAR:
> param.sSpatialLayers[0].uiTransferCharacteristics = TRC_LINEAR;
> break;
> > +case AVCOL_TRC_LOG:
> param.sSpatialLayers[0].uiTransferCharacteristics = TRC_LOG100;
> break;
> > +case AVCOL_TRC_LOG_SQRT:
> param.sSpatialLayers[0].uiTransferCharacteristics = TRC_LOG316;
> break;
> > +case AVCOL_TRC_IEC61966_2_4:
> param.sSpatialLayers[0].uiTransferCharacteristics = TRC_IEC61966_2_4;
> break;
> > +case AVCOL_TRC_BT1361_ECG:
> param.sSpatialLayers[0].uiTransferCharacteristics = TRC_BT1361E;
> break;
> > +case AVCOL_TRC_IEC61966_2_1:
> param.sSpatialLayers[0].uiTransferCharacteristics = TRC_IEC61966_2_1;
> break;
> > +case AVCOL_TRC_BT2020_10:
> param.sSpatialLayers[0].uiTransferCharacteristics = TRC_BT2020_10;
> break;
> > +case AVCOL_TRC_BT2020_12:
> param.sSpatialLayers[0].uiTransferCharacteristics = TRC_BT2020_12;
> break;
> > +default:
> param.sSpatialLayers[0].uiTransferCharacteristics = TRC_UNDEF;
> break;
> > +}
> > +switch (avctx->colorspace) {
> > +case AVCOL_SPC_RGB:
> param.sSpatialLayers[0].uiColorMatrix = CM_GBR;   break;
> > +case AVCOL_SPC_BT709:
> param.sSpatialLayers[0].uiColorMatrix = CM_BT709; break;
> > +case AVCOL_SPC_UNSPECIFIED:
> param.sSpatialLayers[0].uiColorMatrix = CM_UNDEF; break;
> > +case AVCOL_SPC_FCC:  param.sSpatialLayers[0].uiColorMatrix
> = CM_FCC;   break;
> > +case AVCOL_SPC_BT470BG:
> param.sSpatialLayers[0].uiColorMatrix = CM_BT470BG;   break;
> > +case AVCOL_SPC_SMPTE170M:
> param.sSpatialLayers[0].uiColorMatrix = CM_SMPTE170M;
> break;
> > +case AVCOL_SPC_SMPTE240M:
> param.sSpatia

Re: [FFmpeg-devel] [PATCH] Save FFmpeg colorspace info in openh264 video files.

2016-12-02 Thread James Almer
On 12/1/2016 6:26 PM, Gregory J. Wolfe wrote:
> As of version 1.6, libopenh264 saves (in the output video file)
> information about the color primaries, transfer characteristics,
> and color matrix used when the video pixel data was created.
> This patch sets the required libopenh264 data structures using
> the FFmpeg colorspace information so that video players will
> know how to properly decode video files created using FFmpeg
> and libopenh264.
> 
> Signed-off-by: Gregory J. Wolfe 
> ---
>  libavcodec/libopenh264enc.c | 49 
> +
>  1 file changed, 49 insertions(+)
> 
> diff --git a/libavcodec/libopenh264enc.c b/libavcodec/libopenh264enc.c
> index e84de27..3b019b8 100644
> --- a/libavcodec/libopenh264enc.c
> +++ b/libavcodec/libopenh264enc.c
> @@ -205,6 +205,55 @@ FF_ENABLE_DEPRECATION_WARNINGS
>  }
>  }
>  
> +#if OPENH264_VER_AT_LEAST(1, 6)
> +// set video signal type information
> +param.sSpatialLayers[0].bVideoSignalTypePresent = true;
> +param.sSpatialLayers[0].uiVideoFormat = VF_UNDEF; // default; choices 
> are VF_: COMPONENT, PAL, NTSC, SECAM, MAC, UNDEF
> +param.sSpatialLayers[0].bFullRange = avctx->color_range == 
> AVCOL_RANGE_JPEG;
> +param.sSpatialLayers[0].bColorDescriptionPresent = true;
> +switch (avctx->color_primaries) {
> +case AVCOL_PRI_BT709:param.sSpatialLayers[0].uiColorPrimaries
>   = CP_BT709; break;
> +case AVCOL_PRI_UNSPECIFIED:  param.sSpatialLayers[0].uiColorPrimaries
>   = CP_UNDEF; break;
> +case AVCOL_PRI_BT470M:   param.sSpatialLayers[0].uiColorPrimaries
>   = CP_BT470M;break;
> +case AVCOL_PRI_BT470BG:  param.sSpatialLayers[0].uiColorPrimaries
>   = CP_BT470BG;   break;
> +case AVCOL_PRI_SMPTE170M:param.sSpatialLayers[0].uiColorPrimaries
>   = CP_SMPTE170M; break;
> +case AVCOL_PRI_SMPTE240M:param.sSpatialLayers[0].uiColorPrimaries
>   = CP_SMPTE240M; break;
> +case AVCOL_PRI_FILM: param.sSpatialLayers[0].uiColorPrimaries
>   = CP_FILM;  break;
> +case AVCOL_PRI_BT2020:   param.sSpatialLayers[0].uiColorPrimaries
>   = CP_BT2020;break;
> +default: param.sSpatialLayers[0].uiColorPrimaries
>   = CP_UNDEF; break;
> +}
> +switch (avctx->color_trc) {
> +case AVCOL_TRC_BT709:
> param.sSpatialLayers[0].uiTransferCharacteristics = TRC_BT709;break;
> +case AVCOL_TRC_UNSPECIFIED:  
> param.sSpatialLayers[0].uiTransferCharacteristics = TRC_UNDEF;break;
> +case AVCOL_TRC_GAMMA22:  
> param.sSpatialLayers[0].uiTransferCharacteristics = TRC_BT470M;   break;
> +case AVCOL_TRC_GAMMA28:  
> param.sSpatialLayers[0].uiTransferCharacteristics = TRC_BT470BG;  break;
> +case AVCOL_TRC_SMPTE170M:
> param.sSpatialLayers[0].uiTransferCharacteristics = TRC_SMPTE170M;break;
> +case AVCOL_TRC_SMPTE240M:
> param.sSpatialLayers[0].uiTransferCharacteristics = TRC_SMPTE240M;break;
> +case AVCOL_TRC_LINEAR:   
> param.sSpatialLayers[0].uiTransferCharacteristics = TRC_LINEAR;   break;
> +case AVCOL_TRC_LOG:  
> param.sSpatialLayers[0].uiTransferCharacteristics = TRC_LOG100;   break;
> +case AVCOL_TRC_LOG_SQRT: 
> param.sSpatialLayers[0].uiTransferCharacteristics = TRC_LOG316;   break;
> +case AVCOL_TRC_IEC61966_2_4: 
> param.sSpatialLayers[0].uiTransferCharacteristics = TRC_IEC61966_2_4; break;
> +case AVCOL_TRC_BT1361_ECG:   
> param.sSpatialLayers[0].uiTransferCharacteristics = TRC_BT1361E;  break;
> +case AVCOL_TRC_IEC61966_2_1: 
> param.sSpatialLayers[0].uiTransferCharacteristics = TRC_IEC61966_2_1; break;
> +case AVCOL_TRC_BT2020_10:
> param.sSpatialLayers[0].uiTransferCharacteristics = TRC_BT2020_10;break;
> +case AVCOL_TRC_BT2020_12:
> param.sSpatialLayers[0].uiTransferCharacteristics = TRC_BT2020_12;break;
> +default: 
> param.sSpatialLayers[0].uiTransferCharacteristics = TRC_UNDEF;break;
> +}
> +switch (avctx->colorspace) {
> +case AVCOL_SPC_RGB:  param.sSpatialLayers[0].uiColorMatrix   
>   = CM_GBR;   break;
> +case AVCOL_SPC_BT709:param.sSpatialLayers[0].uiColorMatrix   
>   = CM_BT709; break;
> +case AVCOL_SPC_UNSPECIFIED:  param.sSpatialLayers[0].uiColorMatrix   
>   = CM_UNDEF; break;
> +case AVCOL_SPC_FCC:  param.sSpatialLayers[0].uiColorMatrix   
>   = CM_FCC;   break;
> +case AVCOL_SPC_BT470BG:  param.sSpatialLayers[0].uiColorMatrix   
>   = CM_BT470BG;   break;
> +case AVCOL_SPC_SMPTE170M:param.sSpatialLayers[0].uiColorMatrix   
>   = CM_SMPTE170M; break;
> +case AVCOL_SPC_SMPTE240M:param.sSpatialLayers[0].uiColorMatrix   
>   =

Re: [FFmpeg-devel] [PATCH] Save FFmpeg colorspace info in openh264 video files.

2016-12-02 Thread Gregory J Wolfe
> > +switch (avctx->color_primaries) {
> > +case AVCOL_PRI_BT709:
> param.sSpatialLayers[0].uiColorPrimaries  = CP_BT709; break;
> > +case AVCOL_PRI_UNSPECIFIED:
> param.sSpatialLayers[0].uiColorPrimaries  = CP_UNDEF; break;
> 
> [ignore]
> Please align vertically.
> [/ignore]
> Is it possible to convince gmail to always use a fixed-width font?
> The patch looks ugly here on gmail but I suspect it was aligned nicely...
> 
> Thank you, Carl Eugen

I verified that my original edited file was aligned using vim.  Also,
I copied/pasted the code lines from your reply into notepad and
THAT is also aligned.

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


Re: [FFmpeg-devel] [PATCH] Save FFmpeg colorspace info in openh264 video files.

2016-12-01 Thread Ronald S. Bultje
Hi,

On Thu, Dec 1, 2016 at 6:35 PM, Carl Eugen Hoyos  wrote:

> 2016-12-01 22:26 GMT+01:00 Gregory J. Wolfe  >:
>
> > +switch (avctx->color_primaries) {
> > +case AVCOL_PRI_BT709:param.sSpatialLayers[0].uiColorPrimaries
> = CP_BT709; break;
> > +case AVCOL_PRI_UNSPECIFIED:  param.sSpatialLayers[0].uiColorPrimaries
> = CP_UNDEF; break;
>
> [ignore]
> Please align vertically.
> [/ignore]
> Is it possible to convince gmail to always use a fixed-width font?
> The patch looks ugly here on gmail but I suspect it was aligned nicely...


In settings, change "Default text style:" to "Fixed Width".

I don't believe there is a way to do this only for inline patches. I agree
it would be useful.

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


Re: [FFmpeg-devel] [PATCH] Save FFmpeg colorspace info in openh264 video files.

2016-12-01 Thread Carl Eugen Hoyos
2016-12-01 22:26 GMT+01:00 Gregory J. Wolfe :

> +switch (avctx->color_primaries) {
> +case AVCOL_PRI_BT709:param.sSpatialLayers[0].uiColorPrimaries
>   = CP_BT709; break;
> +case AVCOL_PRI_UNSPECIFIED:  param.sSpatialLayers[0].uiColorPrimaries
>   = CP_UNDEF; break;

[ignore]
Please align vertically.
[/ignore]
Is it possible to convince gmail to always use a fixed-width font?
The patch looks ugly here on gmail but I suspect it was aligned nicely...

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


[FFmpeg-devel] [PATCH] Save FFmpeg colorspace info in openh264 video files.

2016-12-01 Thread Gregory J. Wolfe
As of version 1.6, libopenh264 saves (in the output video file)
information about the color primaries, transfer characteristics,
and color matrix used when the video pixel data was created.
This patch sets the required libopenh264 data structures using
the FFmpeg colorspace information so that video players will
know how to properly decode video files created using FFmpeg
and libopenh264.

Signed-off-by: Gregory J. Wolfe 
---
 libavcodec/libopenh264enc.c | 49 +
 1 file changed, 49 insertions(+)

diff --git a/libavcodec/libopenh264enc.c b/libavcodec/libopenh264enc.c
index e84de27..3b019b8 100644
--- a/libavcodec/libopenh264enc.c
+++ b/libavcodec/libopenh264enc.c
@@ -205,6 +205,55 @@ FF_ENABLE_DEPRECATION_WARNINGS
 }
 }
 
+#if OPENH264_VER_AT_LEAST(1, 6)
+// set video signal type information
+param.sSpatialLayers[0].bVideoSignalTypePresent = true;
+param.sSpatialLayers[0].uiVideoFormat = VF_UNDEF; // default; choices are 
VF_: COMPONENT, PAL, NTSC, SECAM, MAC, UNDEF
+param.sSpatialLayers[0].bFullRange = avctx->color_range == 
AVCOL_RANGE_JPEG;
+param.sSpatialLayers[0].bColorDescriptionPresent = true;
+switch (avctx->color_primaries) {
+case AVCOL_PRI_BT709:param.sSpatialLayers[0].uiColorPrimaries  
= CP_BT709; break;
+case AVCOL_PRI_UNSPECIFIED:  param.sSpatialLayers[0].uiColorPrimaries  
= CP_UNDEF; break;
+case AVCOL_PRI_BT470M:   param.sSpatialLayers[0].uiColorPrimaries  
= CP_BT470M;break;
+case AVCOL_PRI_BT470BG:  param.sSpatialLayers[0].uiColorPrimaries  
= CP_BT470BG;   break;
+case AVCOL_PRI_SMPTE170M:param.sSpatialLayers[0].uiColorPrimaries  
= CP_SMPTE170M; break;
+case AVCOL_PRI_SMPTE240M:param.sSpatialLayers[0].uiColorPrimaries  
= CP_SMPTE240M; break;
+case AVCOL_PRI_FILM: param.sSpatialLayers[0].uiColorPrimaries  
= CP_FILM;  break;
+case AVCOL_PRI_BT2020:   param.sSpatialLayers[0].uiColorPrimaries  
= CP_BT2020;break;
+default: param.sSpatialLayers[0].uiColorPrimaries  
= CP_UNDEF; break;
+}
+switch (avctx->color_trc) {
+case AVCOL_TRC_BT709:
param.sSpatialLayers[0].uiTransferCharacteristics = TRC_BT709;break;
+case AVCOL_TRC_UNSPECIFIED:  
param.sSpatialLayers[0].uiTransferCharacteristics = TRC_UNDEF;break;
+case AVCOL_TRC_GAMMA22:  
param.sSpatialLayers[0].uiTransferCharacteristics = TRC_BT470M;   break;
+case AVCOL_TRC_GAMMA28:  
param.sSpatialLayers[0].uiTransferCharacteristics = TRC_BT470BG;  break;
+case AVCOL_TRC_SMPTE170M:
param.sSpatialLayers[0].uiTransferCharacteristics = TRC_SMPTE170M;break;
+case AVCOL_TRC_SMPTE240M:
param.sSpatialLayers[0].uiTransferCharacteristics = TRC_SMPTE240M;break;
+case AVCOL_TRC_LINEAR:   
param.sSpatialLayers[0].uiTransferCharacteristics = TRC_LINEAR;   break;
+case AVCOL_TRC_LOG:  
param.sSpatialLayers[0].uiTransferCharacteristics = TRC_LOG100;   break;
+case AVCOL_TRC_LOG_SQRT: 
param.sSpatialLayers[0].uiTransferCharacteristics = TRC_LOG316;   break;
+case AVCOL_TRC_IEC61966_2_4: 
param.sSpatialLayers[0].uiTransferCharacteristics = TRC_IEC61966_2_4; break;
+case AVCOL_TRC_BT1361_ECG:   
param.sSpatialLayers[0].uiTransferCharacteristics = TRC_BT1361E;  break;
+case AVCOL_TRC_IEC61966_2_1: 
param.sSpatialLayers[0].uiTransferCharacteristics = TRC_IEC61966_2_1; break;
+case AVCOL_TRC_BT2020_10:
param.sSpatialLayers[0].uiTransferCharacteristics = TRC_BT2020_10;break;
+case AVCOL_TRC_BT2020_12:
param.sSpatialLayers[0].uiTransferCharacteristics = TRC_BT2020_12;break;
+default: 
param.sSpatialLayers[0].uiTransferCharacteristics = TRC_UNDEF;break;
+}
+switch (avctx->colorspace) {
+case AVCOL_SPC_RGB:  param.sSpatialLayers[0].uiColorMatrix 
= CM_GBR;   break;
+case AVCOL_SPC_BT709:param.sSpatialLayers[0].uiColorMatrix 
= CM_BT709; break;
+case AVCOL_SPC_UNSPECIFIED:  param.sSpatialLayers[0].uiColorMatrix 
= CM_UNDEF; break;
+case AVCOL_SPC_FCC:  param.sSpatialLayers[0].uiColorMatrix 
= CM_FCC;   break;
+case AVCOL_SPC_BT470BG:  param.sSpatialLayers[0].uiColorMatrix 
= CM_BT470BG;   break;
+case AVCOL_SPC_SMPTE170M:param.sSpatialLayers[0].uiColorMatrix 
= CM_SMPTE170M; break;
+case AVCOL_SPC_SMPTE240M:param.sSpatialLayers[0].uiColorMatrix 
= CM_SMPTE240M; break;
+case AVCOL_SPC_YCOCG:param.sSpatialLayers[0].uiColorMatrix 
= CM_YCGCO; break;
+case AVCOL_SPC_BT2020_NCL:   param.sSpatialLayers[0].uiColorMatrix 
= CM_BT2020NC;

Re: [FFmpeg-devel] [PATCH] Save FFmpeg colorspace info in openh264 video files.

2016-11-28 Thread Carl Eugen Hoyos
2016-11-28 23:25 GMT+01:00 Gregory J. Wolfe :

> This patch sets the required libopenh264 data structures using
> the FFmpeg colorspace information so that video players will
> know how to properly decode video files created using FFmpeg
> and libopenh264.

Please copy FFmpeg's switch() style from another file and please
consider to align "param.", "=" and "break".

> +param.sSpatialLayers[0].uiVideoFormat = VF_UNDEF;

(What are the possible "formats"?)

> +param.sSpatialLayers[0].bFullRange = (avctx->color_range == 
> AVCOL_RANGE_JPEG);

The parentheses look unneeded.

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


[FFmpeg-devel] [PATCH] Save FFmpeg colorspace info in openh264 video files.

2016-11-28 Thread Gregory J. Wolfe
As of version 1.6, libopenh264 saves (in the output video file)
information about the color primaries, transfer characteristics,
and color matrix used when the video pixel data was created.
This patch sets the required libopenh264 data structures using
the FFmpeg colorspace information so that video players will
know how to properly decode video files created using FFmpeg
and libopenh264.

Signed-off-by: Gregory J. Wolfe 
---
 libavcodec/libopenh264enc.c | 52 +
 1 file changed, 52 insertions(+)

diff --git a/libavcodec/libopenh264enc.c b/libavcodec/libopenh264enc.c
index 5aa1596..6de7790 100644
--- a/libavcodec/libopenh264enc.c
+++ b/libavcodec/libopenh264enc.c
@@ -206,6 +206,58 @@ FF_ENABLE_DEPRECATION_WARNINGS
 }
 }
 
+#if OPENH264_VER_AT_LEAST(1, 6)
+// set video signal type information
+param.sSpatialLayers[0].bVideoSignalTypePresent = true;
+param.sSpatialLayers[0].uiVideoFormat = VF_UNDEF;
+param.sSpatialLayers[0].bFullRange = (avctx->color_range == 
AVCOL_RANGE_JPEG);
+param.sSpatialLayers[0].bColorDescriptionPresent = true;
+switch  ( avctx->color_primaries )
+{
+case  AVCOL_PRI_BT709:param.sSpatialLayers[0].uiColorPrimaries = 
CP_BT709;  break;
+case  AVCOL_PRI_UNSPECIFIED:  param.sSpatialLayers[0].uiColorPrimaries = 
CP_UNDEF;  break;
+case  AVCOL_PRI_BT470M:   param.sSpatialLayers[0].uiColorPrimaries = 
CP_BT470M;  break;
+case  AVCOL_PRI_BT470BG:  param.sSpatialLayers[0].uiColorPrimaries = 
CP_BT470BG;  break;
+case  AVCOL_PRI_SMPTE170M:param.sSpatialLayers[0].uiColorPrimaries = 
CP_SMPTE170M;  break;
+case  AVCOL_PRI_SMPTE240M:param.sSpatialLayers[0].uiColorPrimaries = 
CP_SMPTE240M;  break;
+case  AVCOL_PRI_FILM: param.sSpatialLayers[0].uiColorPrimaries = 
CP_FILM;  break;
+case  AVCOL_PRI_BT2020:   param.sSpatialLayers[0].uiColorPrimaries = 
CP_BT2020;  break;
+default:  param.sSpatialLayers[0].uiColorPrimaries = 
CP_UNDEF;  break;
+}
+switch  ( avctx->color_trc )
+{
+case  AVCOL_TRC_BT709: 
param.sSpatialLayers[0].uiTransferCharacteristics = TRC_BT709;  break;
+case  AVCOL_TRC_UNSPECIFIED:   
param.sSpatialLayers[0].uiTransferCharacteristics = TRC_UNDEF;  break;
+case  AVCOL_TRC_GAMMA22:   
param.sSpatialLayers[0].uiTransferCharacteristics = TRC_BT470M;  break;
+case  AVCOL_TRC_GAMMA28:   
param.sSpatialLayers[0].uiTransferCharacteristics = TRC_BT470BG;  break;
+case  AVCOL_TRC_SMPTE170M: 
param.sSpatialLayers[0].uiTransferCharacteristics = TRC_SMPTE170M;  break;
+case  AVCOL_TRC_SMPTE240M: 
param.sSpatialLayers[0].uiTransferCharacteristics = TRC_SMPTE240M;  break;
+case  AVCOL_TRC_LINEAR:
param.sSpatialLayers[0].uiTransferCharacteristics = TRC_LINEAR;  break;
+case  AVCOL_TRC_LOG:   
param.sSpatialLayers[0].uiTransferCharacteristics = TRC_LOG100;  break;
+case  AVCOL_TRC_LOG_SQRT:  
param.sSpatialLayers[0].uiTransferCharacteristics = TRC_LOG316;  break;
+case  AVCOL_TRC_IEC61966_2_4:  
param.sSpatialLayers[0].uiTransferCharacteristics = TRC_IEC61966_2_4;  break;
+case  AVCOL_TRC_BT1361_ECG:
param.sSpatialLayers[0].uiTransferCharacteristics = TRC_BT1361E;  break;
+case  AVCOL_TRC_IEC61966_2_1:  
param.sSpatialLayers[0].uiTransferCharacteristics = TRC_IEC61966_2_1;  break;
+case  AVCOL_TRC_BT2020_10: 
param.sSpatialLayers[0].uiTransferCharacteristics = TRC_BT2020_10;  break;
+case  AVCOL_TRC_BT2020_12: 
param.sSpatialLayers[0].uiTransferCharacteristics = TRC_BT2020_12;  break;
+default:   
param.sSpatialLayers[0].uiTransferCharacteristics = TRC_UNDEF;  break;
+}
+switch  ( avctx->colorspace )
+{
+case  AVCOL_SPC_RGB:  param.sSpatialLayers[0].uiColorMatrix = 
CM_GBR;  break;
+case  AVCOL_SPC_BT709:param.sSpatialLayers[0].uiColorMatrix = 
CM_BT709;  break;
+case  AVCOL_SPC_UNSPECIFIED:  param.sSpatialLayers[0].uiColorMatrix = 
CM_UNDEF;  break;
+case  AVCOL_SPC_FCC:  param.sSpatialLayers[0].uiColorMatrix = 
CM_FCC;  break;
+case  AVCOL_SPC_BT470BG:  param.sSpatialLayers[0].uiColorMatrix = 
CM_BT470BG;  break;
+case  AVCOL_SPC_SMPTE170M:param.sSpatialLayers[0].uiColorMatrix = 
CM_SMPTE170M;  break;
+case  AVCOL_SPC_SMPTE240M:param.sSpatialLayers[0].uiColorMatrix = 
CM_SMPTE240M;  break;
+case  AVCOL_SPC_YCOCG:param.sSpatialLayers[0].uiColorMatrix = 
CM_YCGCO;  break;
+case  AVCOL_SPC_BT2020_NCL:   param.sSpatialLayers[0].uiColorMatrix = 
CM_BT2020NC;  break;
+case  AVCOL_SPC_BT2020_CL:param.sSpatialLayers[0].uiColorMatrix = 
CM_BT2020C;  break;
+default:  param.sSpatialLayers[0].uiColorMatrix = 
CM_UNDEF;  break;
+}
+#endif
+
 if ((*s->encoder)->InitializeExt(s->encoder, ¶m) != cmResultSuccess) {
 av_log(avctx, AV_LOG_ERROR, "Initialize fa