mirror of https://git.ffmpeg.org/ffmpeg.git
cinedec: report white balance gain coefficients using metadata
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
parent
7a79c055e3
commit
2093c1dc51
|
@ -27,6 +27,7 @@
|
||||||
|
|
||||||
#include "libavutil/intreadwrite.h"
|
#include "libavutil/intreadwrite.h"
|
||||||
#include "libavcodec/bmp.h"
|
#include "libavcodec/bmp.h"
|
||||||
|
#include "libavutil/intfloat.h"
|
||||||
#include "avformat.h"
|
#include "avformat.h"
|
||||||
#include "internal.h"
|
#include "internal.h"
|
||||||
|
|
||||||
|
@ -78,6 +79,16 @@ static int set_metadata_int(AVDictionary **dict, const char *key, int value, int
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int set_metadata_float(AVDictionary **dict, const char *key, float value, int allow_zero)
|
||||||
|
{
|
||||||
|
if (value != 0 || allow_zero) {
|
||||||
|
char tmp[64];
|
||||||
|
snprintf(tmp, sizeof(tmp), "%f", value);
|
||||||
|
return av_dict_set(dict, key, tmp, 0);
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static int cine_read_header(AVFormatContext *avctx)
|
static int cine_read_header(AVFormatContext *avctx)
|
||||||
{
|
{
|
||||||
AVIOContext *pb = avctx->pb;
|
AVIOContext *pb = avctx->pb;
|
||||||
|
@ -177,7 +188,10 @@ static int cine_read_header(AVFormatContext *avctx)
|
||||||
set_metadata_int(&st->metadata, "contrast", avio_rl32(pb), 1);
|
set_metadata_int(&st->metadata, "contrast", avio_rl32(pb), 1);
|
||||||
set_metadata_int(&st->metadata, "gamma", avio_rl32(pb), 1);
|
set_metadata_int(&st->metadata, "gamma", avio_rl32(pb), 1);
|
||||||
|
|
||||||
avio_skip(pb, 72); // Reserved1 .. WBView
|
avio_skip(pb, 12 + 16); // Reserved1 .. AutoExpRect
|
||||||
|
set_metadata_float(&st->metadata, "wbgain[0].r", av_int2float(avio_rl32(pb)), 1);
|
||||||
|
set_metadata_float(&st->metadata, "wbgain[0].b", av_int2float(avio_rl32(pb)), 1);
|
||||||
|
avio_skip(pb, 36); // WBGain[1].. WBView
|
||||||
|
|
||||||
st->codec->bits_per_coded_sample = avio_rl32(pb);
|
st->codec->bits_per_coded_sample = avio_rl32(pb);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue