summaryrefslogtreecommitdiff
path: root/libavformat
diff options
context:
space:
mode:
authorVignesh Venkatasubramanian <vigneshv@google.com>2013-02-04 15:17:52 -0800
committerMichael Niedermayer <michaelni@gmx.at>2013-02-14 21:34:47 +0100
commitce6a8e5947cabf90720fe0763301e1657252dbec (patch)
tree8b10dc6b46dcecb4fa70b5945a849c748d2f1b6c /libavformat
parent2f3bc5122822687dc388f7352c92cf6db456cf7c (diff)
Adding AlphaMode element to Matroska Parser
Adding support for parsing AlphaMode element in the Track header and export that information as a metadata tag. This flag indicates presence of alpha channel data in BlockAdditional element. Signed-off-by: Vignesh Venkatasubramanian <vigneshv@google.com> Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavformat')
-rw-r--r--libavformat/matroska.h1
-rw-r--r--libavformat/matroskadec.c6
2 files changed, 7 insertions, 0 deletions
diff --git a/libavformat/matroska.h b/libavformat/matroska.h
index 769fe5445a..8e6f8cc339 100644
--- a/libavformat/matroska.h
+++ b/libavformat/matroska.h
@@ -118,6 +118,7 @@
#define MATROSKA_ID_VIDEODISPLAYUNIT 0x54B2
#define MATROSKA_ID_VIDEOFLAGINTERLACED 0x9A
#define MATROSKA_ID_VIDEOSTEREOMODE 0x53B8
+#define MATROSKA_ID_VIDEOALPHAMODE 0x53C0
#define MATROSKA_ID_VIDEOASPECTRATIO 0x54B3
#define MATROSKA_ID_VIDEOCOLORSPACE 0x2EB524
diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c
index 3519a136ce..d2e5329932 100644
--- a/libavformat/matroskadec.c
+++ b/libavformat/matroskadec.c
@@ -116,6 +116,7 @@ typedef struct {
uint64_t pixel_height;
EbmlBin color_space;
uint64_t stereo_mode;
+ uint64_t alpha_mode;
} MatroskaTrackVideo;
typedef struct {
@@ -320,6 +321,7 @@ static EbmlSyntax matroska_track_video[] = {
{ MATROSKA_ID_VIDEOPIXELHEIGHT, EBML_UINT, 0, offsetof(MatroskaTrackVideo,pixel_height) },
{ MATROSKA_ID_VIDEOCOLORSPACE, EBML_BIN, 0, offsetof(MatroskaTrackVideo,color_space) },
{ MATROSKA_ID_VIDEOSTEREOMODE, EBML_UINT, 0, offsetof(MatroskaTrackVideo,stereo_mode) },
+ { MATROSKA_ID_VIDEOALPHAMODE, EBML_UINT, 0, offsetof(MatroskaTrackVideo,alpha_mode) },
{ MATROSKA_ID_VIDEOPIXELCROPB, EBML_NONE },
{ MATROSKA_ID_VIDEOPIXELCROPT, EBML_NONE },
{ MATROSKA_ID_VIDEOPIXELCROPL, EBML_NONE },
@@ -1786,6 +1788,10 @@ static int matroska_read_header(AVFormatContext *s)
if (track->video.stereo_mode && track->video.stereo_mode < MATROSKA_VIDEO_STEREO_MODE_COUNT)
av_dict_set(&st->metadata, "stereo_mode", ff_matroska_video_stereo_mode[track->video.stereo_mode], 0);
+ /* export alpha mode flag as metadata tag */
+ if (track->video.alpha_mode)
+ av_dict_set(&st->metadata, "alpha_mode", "1", 0);
+
/* if we have virtual track, mark the real tracks */
for (j=0; j < track->operation.combine_planes.nb_elem; j++) {
char buf[32];