~ubuntu-branches/ubuntu/utopic/libav/utopic

« back to all changes in this revision

Viewing changes to libavformat/matroskadec.c

  • Committer: Package Import Robot
  • Author(s): Reinhard Tartler
  • Date: 2014-09-13 15:36:38 UTC
  • mfrom: (1.3.49 sid)
  • Revision ID: package-import@ubuntu.com-20140913153638-6rfush77baz008o9
Tags: 6:11-1
* Upload final 11 release
  - matroskadec: parse stereo mode on decoding (Closes: #757185)

Show diffs side-by-side

added added

removed removed

Lines of Context:
123
123
    uint64_t pixel_width;
124
124
    uint64_t pixel_height;
125
125
    uint64_t fourcc;
 
126
    uint64_t stereo_mode;
126
127
} MatroskaTrackVideo;
127
128
 
128
129
typedef struct {
319
320
    { MATROSKA_ID_VIDEOPIXELCROPR,     EBML_NONE },
320
321
    { MATROSKA_ID_VIDEODISPLAYUNIT,    EBML_NONE },
321
322
    { MATROSKA_ID_VIDEOFLAGINTERLACED, EBML_NONE },
322
 
    { MATROSKA_ID_VIDEOSTEREOMODE,     EBML_NONE },
 
323
    { MATROSKA_ID_VIDEOSTEREOMODE,     EBML_UINT,  0, offsetof(MatroskaTrackVideo, stereo_mode), { .u = MATROSKA_VIDEO_STEREOMODE_TYPE_NB } },
323
324
    { MATROSKA_ID_VIDEOASPECTRATIO,    EBML_NONE },
324
325
    { 0 }
325
326
};
1786
1787
                av_reduce(&st->avg_frame_rate.num, &st->avg_frame_rate.den,
1787
1788
                          1000000000, track->default_duration, 30000);
1788
1789
            }
 
1790
            // add stream level stereo3d side data if it is a supported format
 
1791
            if (track->video.stereo_mode < MATROSKA_VIDEO_STEREOMODE_TYPE_NB &&
 
1792
                track->video.stereo_mode != 10 && track->video.stereo_mode != 12) {
 
1793
                int ret = ff_mkv_stereo3d_conv(st, track->video.stereo_mode);
 
1794
                if (ret < 0)
 
1795
                    return ret;
 
1796
            }
1789
1797
        } else if (track->type == MATROSKA_TRACK_TYPE_AUDIO) {
1790
1798
            st->codec->codec_type  = AVMEDIA_TYPE_AUDIO;
1791
1799
            st->codec->sample_rate = track->audio.out_samplerate;
1821
1829
        ebml.version         > EBML_VERSION      ||
1822
1830
        ebml.max_size        > sizeof(uint64_t)  ||
1823
1831
        ebml.id_length       > sizeof(uint32_t)  ||
1824
 
        ebml.doctype_version > 2) {
 
1832
        ebml.doctype_version > 3) {
1825
1833
        av_log(matroska->ctx, AV_LOG_ERROR,
1826
1834
               "EBML header using unsupported features\n"
1827
1835
               "(EBML version %"PRIu64", doctype %s, doc version %"PRIu64")\n",
2601
2609
AVInputFormat ff_matroska_demuxer = {
2602
2610
    .name           = "matroska,webm",
2603
2611
    .long_name      = NULL_IF_CONFIG_SMALL("Matroska / WebM"),
 
2612
    .extensions     = "mkv,mk3d,mka,mks",
2604
2613
    .priv_data_size = sizeof(MatroskaDemuxContext),
2605
2614
    .read_probe     = matroska_probe,
2606
2615
    .read_header    = matroska_read_header,