libavformat/mov.c File Reference

#include <limits.h>
#include "libavutil/attributes.h"
#include "libavutil/audioconvert.h"
#include "libavutil/intreadwrite.h"
#include "libavutil/intfloat.h"
#include "libavutil/mathematics.h"
#include "libavutil/avstring.h"
#include "libavutil/dict.h"
#include "libavutil/opt.h"
#include "libavutil/timecode.h"
#include "libavcodec/ac3tab.h"
#include "avformat.h"
#include "internal.h"
#include "avio_internal.h"
#include "riff.h"
#include "isom.h"
#include "libavcodec/get_bits.h"
#include "id3v1.h"
#include "mov_chan.h"
#include "qtpalette.h"
#include <assert.h>

Go to the source code of this file.

Data Structures

struct  MOVParseTableEntry

Functions

static int mov_read_default (MOVContext *c, AVIOContext *pb, MOVAtom atom)
static int mov_metadata_track_or_disc_number (MOVContext *c, AVIOContext *pb, unsigned len, const char *key)
static int mov_metadata_int8_bypass_padding (MOVContext *c, AVIOContext *pb, unsigned len, const char *key)
static int mov_metadata_int8_no_padding (MOVContext *c, AVIOContext *pb, unsigned len, const char *key)
static int mov_metadata_gnre (MOVContext *c, AVIOContext *pb, unsigned len, const char *key)
static int mov_read_custom_metadata (MOVContext *c, AVIOContext *pb, MOVAtom atom)
static int mov_read_mac_string (MOVContext *c, AVIOContext *pb, int len, char *dst, int dstlen)
static int mov_read_covr (MOVContext *c, AVIOContext *pb, int type, int len)
static int mov_read_udta_string (MOVContext *c, AVIOContext *pb, MOVAtom atom)
static int mov_read_chpl (MOVContext *c, AVIOContext *pb, MOVAtom atom)
static int mov_read_dref (MOVContext *c, AVIOContext *pb, MOVAtom atom)
static int mov_read_hdlr (MOVContext *c, AVIOContext *pb, MOVAtom atom)
int ff_mov_read_esds (AVFormatContext *fc, AVIOContext *pb, MOVAtom atom)
static int mov_read_esds (MOVContext *c, AVIOContext *pb, MOVAtom atom)
static int mov_read_dac3 (MOVContext *c, AVIOContext *pb, MOVAtom atom)
static int mov_read_dec3 (MOVContext *c, AVIOContext *pb, MOVAtom atom)
static int mov_read_chan (MOVContext *c, AVIOContext *pb, MOVAtom atom)
static int mov_read_wfex (MOVContext *c, AVIOContext *pb, MOVAtom atom)
static int mov_read_pasp (MOVContext *c, AVIOContext *pb, MOVAtom atom)
static int mov_read_mdat (MOVContext *c, AVIOContext *pb, MOVAtom atom)
static int mov_read_ftyp (MOVContext *c, AVIOContext *pb, MOVAtom atom)
static int mov_read_moov (MOVContext *c, AVIOContext *pb, MOVAtom atom)
static int mov_read_moof (MOVContext *c, AVIOContext *pb, MOVAtom atom)
static void mov_metadata_creation_time (AVDictionary **metadata, time_t time)
static int mov_read_mdhd (MOVContext *c, AVIOContext *pb, MOVAtom atom)
static int mov_read_mvhd (MOVContext *c, AVIOContext *pb, MOVAtom atom)
static int mov_read_enda (MOVContext *c, AVIOContext *pb, MOVAtom atom)
static int mov_read_fiel (MOVContext *c, AVIOContext *pb, MOVAtom atom)
static int mov_read_extradata (MOVContext *c, AVIOContext *pb, MOVAtom atom, enum AVCodecID codec_id)
static int mov_read_alac (MOVContext *c, AVIOContext *pb, MOVAtom atom)
static int mov_read_avss (MOVContext *c, AVIOContext *pb, MOVAtom atom)
static int mov_read_jp2h (MOVContext *c, AVIOContext *pb, MOVAtom atom)
static int mov_read_avid (MOVContext *c, AVIOContext *pb, MOVAtom atom)
static int mov_read_svq3 (MOVContext *c, AVIOContext *pb, MOVAtom atom)
static int mov_read_wave (MOVContext *c, AVIOContext *pb, MOVAtom atom)
static int mov_read_glbl (MOVContext *c, AVIOContext *pb, MOVAtom atom)
 This function reads atom content and puts data in extradata without tag nor size unlike mov_read_extradata.
static int mov_read_dvc1 (MOVContext *c, AVIOContext *pb, MOVAtom atom)
static int mov_read_strf (MOVContext *c, AVIOContext *pb, MOVAtom atom)
 An strf atom is a BITMAPINFOHEADER struct.
static int mov_read_stco (MOVContext *c, AVIOContext *pb, MOVAtom atom)
enum AVCodecID ff_mov_get_lpcm_codec_id (int bps, int flags)
 Compute codec id for 'lpcm' tag.
int ff_mov_read_stsd_entries (MOVContext *c, AVIOContext *pb, int entries)
static int mov_read_stsd (MOVContext *c, AVIOContext *pb, MOVAtom atom)
static int mov_read_stsc (MOVContext *c, AVIOContext *pb, MOVAtom atom)
static int mov_read_stps (MOVContext *c, AVIOContext *pb, MOVAtom atom)
static int mov_read_stss (MOVContext *c, AVIOContext *pb, MOVAtom atom)
static int mov_read_stsz (MOVContext *c, AVIOContext *pb, MOVAtom atom)
static int mov_read_stts (MOVContext *c, AVIOContext *pb, MOVAtom atom)
static int mov_read_ctts (MOVContext *c, AVIOContext *pb, MOVAtom atom)
static int mov_read_sbgp (MOVContext *c, AVIOContext *pb, MOVAtom atom)
static void mov_build_index (MOVContext *mov, AVStream *st)
static int mov_open_dref (AVIOContext **pb, const char *src, MOVDref *ref, AVIOInterruptCB *int_cb, int use_absolute_path, AVFormatContext *fc)
static int mov_read_trak (MOVContext *c, AVIOContext *pb, MOVAtom atom)
static int mov_read_ilst (MOVContext *c, AVIOContext *pb, MOVAtom atom)
static int mov_read_meta (MOVContext *c, AVIOContext *pb, MOVAtom atom)
static int mov_read_tkhd (MOVContext *c, AVIOContext *pb, MOVAtom atom)
static int mov_read_tfhd (MOVContext *c, AVIOContext *pb, MOVAtom atom)
static int mov_read_chap (MOVContext *c, AVIOContext *pb, MOVAtom atom)
static int mov_read_trex (MOVContext *c, AVIOContext *pb, MOVAtom atom)
static int mov_read_trun (MOVContext *c, AVIOContext *pb, MOVAtom atom)
static int mov_read_wide (MOVContext *c, AVIOContext *pb, MOVAtom atom)
static int mov_read_cmov (MOVContext *c, AVIOContext *pb, MOVAtom atom)
static int mov_read_elst (MOVContext *c, AVIOContext *pb, MOVAtom atom)
static int mov_read_chan2 (MOVContext *c, AVIOContext *pb, MOVAtom atom)
static int mov_read_tref (MOVContext *c, AVIOContext *pb, MOVAtom atom)
static int mov_probe (AVProbeData *p)
static void mov_read_chapters (AVFormatContext *s)
static int parse_timecode_in_framenum_format (AVFormatContext *s, AVStream *st, uint32_t value, int flags)
static int mov_read_timecode_track (AVFormatContext *s, AVStream *st)
static int mov_read_close (AVFormatContext *s)
static int tmcd_is_referenced (AVFormatContext *s, int tmcd_id)
static void export_orphan_timecode (AVFormatContext *s)
static int mov_read_header (AVFormatContext *s)
static AVIndexEntrymov_find_next_sample (AVFormatContext *s, AVStream **st)
static int mov_read_packet (AVFormatContext *s, AVPacket *pkt)
static int mov_seek_stream (AVFormatContext *s, AVStream *st, int64_t timestamp, int flags)
static int mov_read_seek (AVFormatContext *s, int stream_index, int64_t sample_time, int flags)

Variables

static const uint32_t mac_to_unicode [128]
static const MOVParseTableEntry mov_default_parse_table []
static const AVOption options []
class {
      class_name = "mov,mp4,m4a,3gp,3g2,mj2"
      item_name = av_default_item_name
      option = options
      version = LIBAVUTIL_VERSION_INT
}; 
AVInputFormat ff_mov_demuxer


Function Documentation

static void export_orphan_timecode ( AVFormatContext s  )  [static]

Definition at line 3064 of file mov.c.

Referenced by mov_read_header().

enum AVCodecID ff_mov_get_lpcm_codec_id ( int  bps,
int  flags 
)

Compute codec id for 'lpcm' tag.

See CoreAudioTypes and AudioStreamBasicDescription at Apple.

Definition at line 1164 of file mov.c.

Referenced by ff_mov_read_stsd_entries(), and read_desc_chunk().

int ff_mov_read_esds ( AVFormatContext fc,
AVIOContext pb,
MOVAtom  atom 
)

Definition at line 589 of file mov.c.

Referenced by mov_read_esds(), and read_kuki_chunk().

int ff_mov_read_stsd_entries ( MOVContext c,
AVIOContext pb,
int  entries 
)

Definition at line 1195 of file mov.c.

Referenced by mov_read_stsd(), and qt_rtp_parse_packet().

static void mov_build_index ( MOVContext mov,
AVStream st 
) [static]

Definition at line 1922 of file mov.c.

Referenced by mov_read_trak().

static AVIndexEntry* mov_find_next_sample ( AVFormatContext s,
AVStream **  st 
) [static]

Definition at line 3156 of file mov.c.

Referenced by mov_read_packet().

static void mov_metadata_creation_time ( AVDictionary **  metadata,
time_t  time 
) [static]

Definition at line 781 of file mov.c.

Referenced by mov_read_mdhd(), and mov_read_mvhd().

static int mov_metadata_gnre ( MOVContext c,
AVIOContext pb,
unsigned  len,
const char *  key 
) [static]

Definition at line 117 of file mov.c.

Referenced by mov_read_udta_string().

static int mov_metadata_int8_bypass_padding ( MOVContext c,
AVIOContext pb,
unsigned  len,
const char *  key 
) [static]

Definition at line 90 of file mov.c.

Referenced by mov_read_udta_string().

static int mov_metadata_int8_no_padding ( MOVContext c,
AVIOContext pb,
unsigned  len,
const char *  key 
) [static]

Definition at line 106 of file mov.c.

Referenced by mov_read_udta_string().

static int mov_metadata_track_or_disc_number ( MOVContext c,
AVIOContext pb,
unsigned  len,
const char *  key 
) [static]

Definition at line 71 of file mov.c.

Referenced by mov_read_udta_string().

static int mov_open_dref ( AVIOContext **  pb,
const char *  src,
MOVDref ref,
AVIOInterruptCB int_cb,
int  use_absolute_path,
AVFormatContext fc 
) [static]

Definition at line 2120 of file mov.c.

Referenced by mov_read_trak().

static int mov_probe ( AVProbeData p  )  [static]

Definition at line 2848 of file mov.c.

static int mov_read_alac ( MOVContext c,
AVIOContext pb,
MOVAtom  atom 
) [static]

Definition at line 973 of file mov.c.

static int mov_read_avid ( MOVContext c,
AVIOContext pb,
MOVAtom  atom 
) [static]

Definition at line 988 of file mov.c.

static int mov_read_avss ( MOVContext c,
AVIOContext pb,
MOVAtom  atom 
) [static]

Definition at line 978 of file mov.c.

static int mov_read_chan ( MOVContext c,
AVIOContext pb,
MOVAtom  atom 
) [static]

Definition at line 668 of file mov.c.

static int mov_read_chan2 ( MOVContext c,
AVIOContext pb,
MOVAtom  atom 
) [static]

Definition at line 2665 of file mov.c.

static int mov_read_chap ( MOVContext c,
AVIOContext pb,
MOVAtom  atom 
) [static]

Definition at line 2421 of file mov.c.

static void mov_read_chapters ( AVFormatContext s  )  [static]

Definition at line 2893 of file mov.c.

Referenced by mov_read_header().

static int mov_read_chpl ( MOVContext c,
AVIOContext pb,
MOVAtom  atom 
) [static]

Definition at line 397 of file mov.c.

static int mov_read_close ( AVFormatContext s  )  [static]

Definition at line 3005 of file mov.c.

Referenced by mov_read_header().

static int mov_read_cmov ( MOVContext c,
AVIOContext pb,
MOVAtom  atom 
) [static]

Definition at line 2574 of file mov.c.

static int mov_read_covr ( MOVContext c,
AVIOContext pb,
int  type,
int  len 
) [static]

Definition at line 239 of file mov.c.

Referenced by mov_read_udta_string().

static int mov_read_ctts ( MOVContext c,
AVIOContext pb,
MOVAtom  atom 
) [static]

Definition at line 1826 of file mov.c.

static int mov_read_custom_metadata ( MOVContext c,
AVIOContext pb,
MOVAtom  atom 
) [static]

Definition at line 134 of file mov.c.

Referenced by mov_read_udta_string().

static int mov_read_dac3 ( MOVContext c,
AVIOContext pb,
MOVAtom  atom 
) [static]

Definition at line 616 of file mov.c.

static int mov_read_dec3 ( MOVContext c,
AVIOContext pb,
MOVAtom  atom 
) [static]

Definition at line 640 of file mov.c.

static int mov_read_default ( MOVContext c,
AVIOContext pb,
MOVAtom  atom 
) [static]

static int mov_read_dref ( MOVContext c,
AVIOContext pb,
MOVAtom  atom 
) [static]

Definition at line 429 of file mov.c.

static int mov_read_dvc1 ( MOVContext c,
AVIOContext pb,
MOVAtom  atom 
) [static]

Definition at line 1061 of file mov.c.

static int mov_read_elst ( MOVContext c,
AVIOContext pb,
MOVAtom  atom 
) [static]

Definition at line 2623 of file mov.c.

static int mov_read_enda ( MOVContext c,
AVIOContext pb,
MOVAtom  atom 
) [static]

Definition at line 876 of file mov.c.

static int mov_read_esds ( MOVContext c,
AVIOContext pb,
MOVAtom  atom 
) [static]

Definition at line 611 of file mov.c.

static int mov_read_extradata ( MOVContext c,
AVIOContext pb,
MOVAtom  atom,
enum AVCodecID  codec_id 
) [static]

Definition at line 943 of file mov.c.

Referenced by mov_read_alac(), mov_read_avid(), mov_read_avss(), mov_read_jp2h(), and mov_read_svq3().

static int mov_read_fiel ( MOVContext c,
AVIOContext pb,
MOVAtom  atom 
) [static]

Definition at line 908 of file mov.c.

static int mov_read_ftyp ( MOVContext c,
AVIOContext pb,
MOVAtom  atom 
) [static]

Definition at line 730 of file mov.c.

static int mov_read_glbl ( MOVContext c,
AVIOContext pb,
MOVAtom  atom 
) [static]

This function reads atom content and puts data in extradata without tag nor size unlike mov_read_extradata.

Definition at line 1031 of file mov.c.

Referenced by ff_mov_read_stsd_entries().

static int mov_read_hdlr ( MOVContext c,
AVIOContext pb,
MOVAtom  atom 
) [static]

Definition at line 537 of file mov.c.

static int mov_read_header ( AVFormatContext s  )  [static]

Definition at line 3082 of file mov.c.

static int mov_read_ilst ( MOVContext c,
AVIOContext pb,
MOVAtom  atom 
) [static]

Definition at line 2263 of file mov.c.

static int mov_read_jp2h ( MOVContext c,
AVIOContext pb,
MOVAtom  atom 
) [static]

Definition at line 983 of file mov.c.

static int mov_read_mac_string ( MOVContext c,
AVIOContext pb,
int  len,
char *  dst,
int  dstlen 
) [static]

Definition at line 221 of file mov.c.

Referenced by ff_mov_read_stsd_entries(), and mov_read_udta_string().

static int mov_read_mdat ( MOVContext c,
AVIOContext pb,
MOVAtom  atom 
) [static]

Definition at line 721 of file mov.c.

Referenced by mov_read_wide().

static int mov_read_mdhd ( MOVContext c,
AVIOContext pb,
MOVAtom  atom 
) [static]

Definition at line 795 of file mov.c.

static int mov_read_meta ( MOVContext c,
AVIOContext pb,
MOVAtom  atom 
) [static]

Definition at line 2272 of file mov.c.

static int mov_read_moof ( MOVContext c,
AVIOContext pb,
MOVAtom  atom 
) [static]

Definition at line 774 of file mov.c.

static int mov_read_moov ( MOVContext c,
AVIOContext pb,
MOVAtom  atom 
) [static]

Definition at line 762 of file mov.c.

static int mov_read_mvhd ( MOVContext c,
AVIOContext pb,
MOVAtom  atom 
) [static]

Definition at line 835 of file mov.c.

static int mov_read_packet ( AVFormatContext s,
AVPacket pkt 
) [static]

Definition at line 3182 of file mov.c.

static int mov_read_pasp ( MOVContext c,
AVIOContext pb,
MOVAtom  atom 
) [static]

Definition at line 697 of file mov.c.

static int mov_read_sbgp ( MOVContext c,
AVIOContext pb,
MOVAtom  atom 
) [static]

Definition at line 1882 of file mov.c.

static int mov_read_seek ( AVFormatContext s,
int  stream_index,
int64_t  sample_time,
int  flags 
) [static]

Definition at line 3298 of file mov.c.

static int mov_read_stco ( MOVContext c,
AVIOContext pb,
MOVAtom  atom 
) [static]

Definition at line 1117 of file mov.c.

static int mov_read_stps ( MOVContext c,
AVIOContext pb,
MOVAtom  atom 
) [static]

Definition at line 1613 of file mov.c.

static int mov_read_strf ( MOVContext c,
AVIOContext pb,
MOVAtom  atom 
) [static]

An strf atom is a BITMAPINFOHEADER struct.

This struct is 40 bytes itself, but can have extradata appended at the end after the 40 bytes belonging to the struct.

Definition at line 1093 of file mov.c.

static int mov_read_stsc ( MOVContext c,
AVIOContext pb,
MOVAtom  atom 
) [static]

Definition at line 1573 of file mov.c.

static int mov_read_stsd ( MOVContext c,
AVIOContext pb,
MOVAtom  atom 
) [static]

Definition at line 1562 of file mov.c.

static int mov_read_stss ( MOVContext c,
AVIOContext pb,
MOVAtom  atom 
) [static]

Definition at line 1646 of file mov.c.

static int mov_read_stsz ( MOVContext c,
AVIOContext pb,
MOVAtom  atom 
) [static]

Definition at line 1688 of file mov.c.

static int mov_read_stts ( MOVContext c,
AVIOContext pb,
MOVAtom  atom 
) [static]

Definition at line 1766 of file mov.c.

static int mov_read_svq3 ( MOVContext c,
AVIOContext pb,
MOVAtom  atom 
) [static]

Definition at line 993 of file mov.c.

static int mov_read_tfhd ( MOVContext c,
AVIOContext pb,
MOVAtom  atom 
) [static]

Definition at line 2384 of file mov.c.

static int mov_read_timecode_track ( AVFormatContext s,
AVStream st 
) [static]

Definition at line 2977 of file mov.c.

Referenced by mov_read_header().

static int mov_read_tkhd ( MOVContext c,
AVIOContext pb,
MOVAtom  atom 
) [static]

Definition at line 2286 of file mov.c.

static int mov_read_trak ( MOVContext c,
AVIOContext pb,
MOVAtom  atom 
) [static]

Definition at line 2169 of file mov.c.

static int mov_read_tref ( MOVContext c,
AVIOContext pb,
MOVAtom  atom 
) [static]

Definition at line 2674 of file mov.c.

static int mov_read_trex ( MOVContext c,
AVIOContext pb,
MOVAtom  atom 
) [static]

Definition at line 2427 of file mov.c.

static int mov_read_trun ( MOVContext c,
AVIOContext pb,
MOVAtom  atom 
) [static]

Definition at line 2451 of file mov.c.

static int mov_read_udta_string ( MOVContext c,
AVIOContext pb,
MOVAtom  atom 
) [static]

Definition at line 281 of file mov.c.

Referenced by mov_read_default().

static int mov_read_wave ( MOVContext c,
AVIOContext pb,
MOVAtom  atom 
) [static]

Definition at line 998 of file mov.c.

static int mov_read_wfex ( MOVContext c,
AVIOContext pb,
MOVAtom  atom 
) [static]

Definition at line 684 of file mov.c.

static int mov_read_wide ( MOVContext c,
AVIOContext pb,
MOVAtom  atom 
) [static]

Definition at line 2554 of file mov.c.

static int mov_seek_stream ( AVFormatContext s,
AVStream st,
int64_t  timestamp,
int  flags 
) [static]

Definition at line 3268 of file mov.c.

Referenced by mov_read_seek().

static int parse_timecode_in_framenum_format ( AVFormatContext s,
AVStream st,
uint32_t  value,
int  flags 
) [static]

Definition at line 2962 of file mov.c.

Referenced by mov_read_timecode_track().

static int tmcd_is_referenced ( AVFormatContext s,
int  tmcd_id 
) [static]

Definition at line 3046 of file mov.c.

Referenced by export_orphan_timecode().


Variable Documentation

const { ... } [static]

class_name = "mov,mp4,m4a,3gp,3g2,mj2"

Definition at line 3339 of file mov.c.

Initial value:

 {
    .name           = "mov,mp4,m4a,3gp,3g2,mj2",
    .long_name      = NULL_IF_CONFIG_SMALL("QuickTime / MOV"),
    .priv_data_size = sizeof(MOVContext),
    .read_probe     = mov_probe,
    .read_header    = mov_read_header,
    .read_packet    = mov_read_packet,
    .read_close     = mov_read_close,
    .read_seek      = mov_read_seek,
    .priv_class     = &class,
}

Definition at line 3345 of file mov.c.

item_name = av_default_item_name

Definition at line 3340 of file mov.c.

const uint32_t mac_to_unicode[128] [static]

Initial value:

 {
    0x00C4,0x00C5,0x00C7,0x00C9,0x00D1,0x00D6,0x00DC,0x00E1,
    0x00E0,0x00E2,0x00E4,0x00E3,0x00E5,0x00E7,0x00E9,0x00E8,
    0x00EA,0x00EB,0x00ED,0x00EC,0x00EE,0x00EF,0x00F1,0x00F3,
    0x00F2,0x00F4,0x00F6,0x00F5,0x00FA,0x00F9,0x00FB,0x00FC,
    0x2020,0x00B0,0x00A2,0x00A3,0x00A7,0x2022,0x00B6,0x00DF,
    0x00AE,0x00A9,0x2122,0x00B4,0x00A8,0x2260,0x00C6,0x00D8,
    0x221E,0x00B1,0x2264,0x2265,0x00A5,0x00B5,0x2202,0x2211,
    0x220F,0x03C0,0x222B,0x00AA,0x00BA,0x03A9,0x00E6,0x00F8,
    0x00BF,0x00A1,0x00AC,0x221A,0x0192,0x2248,0x2206,0x00AB,
    0x00BB,0x2026,0x00A0,0x00C0,0x00C3,0x00D5,0x0152,0x0153,
    0x2013,0x2014,0x201C,0x201D,0x2018,0x2019,0x00F7,0x25CA,
    0x00FF,0x0178,0x2044,0x20AC,0x2039,0x203A,0xFB01,0xFB02,
    0x2021,0x00B7,0x201A,0x201E,0x2030,0x00C2,0x00CA,0x00C1,
    0x00CB,0x00C8,0x00CD,0x00CE,0x00CF,0x00CC,0x00D3,0x00D4,
    0xF8FF,0x00D2,0x00DA,0x00DB,0x00D9,0x0131,0x02C6,0x02DC,
    0x00AF,0x02D8,0x02D9,0x02DA,0x00B8,0x02DD,0x02DB,0x02C7,
}

Definition at line 202 of file mov.c.

Referenced by mov_read_mac_string().

Definition at line 2698 of file mov.c.

Definition at line 3341 of file mov.c.

const AVOption options[] [static]

Initial value:

 {
    {"use_absolute_path",
        "allow using absolute path when opening alias, this is a possible security issue",
        0x42, FF_OPT_TYPE_INT, {.dbl = 0},
        0, 1, AV_OPT_FLAG_VIDEO_PARAM|AV_OPT_FLAG_DECODING_PARAM},
    {NULL}
}

Definition at line 3330 of file mov.c.

Definition at line 3342 of file mov.c.


Generated on Fri Oct 26 02:50:11 2012 for FFmpeg by  doxygen 1.5.8