wtvenc.c File Reference

Windows Television (WTV) demuxer. More...

#include "libavutil/intreadwrite.h"
#include "libavutil/avassert.h"
#include "avformat.h"
#include "internal.h"
#include "wtv.h"
#include "asf.h"
Include dependency graph for wtvenc.c:

Go to the source code of this file.

Data Structures

struct  WtvFile
 
struct  WtvChunkEntry
 
struct  WtvSyncEntry
 
struct  WtvContext
 
struct  WTVRootEntryTable
 

Macros

#define WTV_BIGSECTOR_SIZE   (1 << WTV_BIGSECTOR_BITS)
 
#define INDEX_BASE   0x2
 
#define MAX_NB_INDEX   10
 
#define _   , 0,
 

Typedefs

typedef int WTVHeaderWriteFunc(AVIOContext *pb)
 

Enumerations

enum  WtvFileIndex {
  WTV_TIMELINE_TABLE_0_HEADER_EVENTS = 0, WTV_TIMELINE_TABLE_0_ENTRIES_EVENTS, WTV_TIMELINE, WTV_TABLE_0_HEADER_LEGACY_ATTRIB,
  WTV_TABLE_0_ENTRIES_LEGACY_ATTRIB, WTV_TABLE_0_REDIRECTOR_LEGACY_ATTRIB, WTV_TABLE_0_HEADER_TIME, WTV_TABLE_0_ENTRIES_TIME,
  WTV_FILES
}
 

Functions

static void add_serial_pair (WtvSyncEntry **list, int *count, int64_t serial, int64_t value)
 
static int write_pad (AVIOContext *pb, int size)
 
static const ff_asf_guidget_codec_guid (enum AVCodecID id, const AVCodecGuid *av_guid)
 
static void write_chunk_header (AVFormatContext *s, const ff_asf_guid *guid, int length, int stream_id)
 Write chunk header. More...
 
static void write_chunk_header2 (AVFormatContext *s, const ff_asf_guid *guid, int stream_id)
 
static void finish_chunk_noindex (AVFormatContext *s)
 
static void write_index (AVFormatContext *s)
 
static void finish_chunk (AVFormatContext *s)
 
static int write_stream_codec_info (AVFormatContext *s, AVStream *st)
 
static int write_stream_codec (AVFormatContext *s, AVStream *st)
 
static void write_sync (AVFormatContext *s)
 
static int write_stream_data (AVFormatContext *s, AVStream *st)
 
static int write_header (AVFormatContext *s)
 
static void write_timestamp (AVFormatContext *s, AVPacket *pkt)
 
static int write_packet (AVFormatContext *s, AVPacket *pkt)
 
static int write_table0_header_events (AVIOContext *pb)
 
static int write_table0_header_legacy_attrib (AVIOContext *pb)
 
static int write_table0_header_time (AVIOContext *pb)
 
static int write_root_table (AVFormatContext *s, int64_t sector_pos)
 
static void write_fat (AVIOContext *pb, int start_sector, int nb_sectors, int shift)
 
static int64_t write_fat_sector (AVFormatContext *s, int64_t start_pos, int nb_sectors, int sector_bits, int depth)
 
static void write_table_entries_events (AVFormatContext *s)
 
static void write_table_entries_time (AVFormatContext *s)
 
static void write_metadata_header (AVIOContext *pb, int type, const char *key, int value_size)
 
static int metadata_header_size (const char *key)
 
static void write_tag_int32 (AVIOContext *pb, const char *key, int value)
 
static void write_tag (AVIOContext *pb, const char *key, const char *value)
 
static int attachment_value_size (const AVPacket *pkt, const AVDictionaryEntry *e)
 
static void write_table_entries_attrib (AVFormatContext *s)
 
static void write_table_redirector_legacy_attrib (AVFormatContext *s)
 
static int finish_file (AVFormatContext *s, enum WtvFileIndex index, int64_t start_pos)
 Pad the remainder of a file Write out fat table. More...
 
static int write_trailer (AVFormatContext *s)
 

Variables

static const uint8_t timeline_table_0_header_events []
 
static const uint8_t table_0_header_legacy_attrib []
 
static const uint8_t table_0_redirector_legacy_attrib []
 
static const uint8_t table_0_header_time []
 
static const uint8_t legacy_attrib []
 
static const ff_asf_guid sub_wtv_guid
 
static const WTVRootEntryTable wtv_root_entry_table []
 
AVOutputFormat ff_wtv_muxer
 

Detailed Description

Windows Television (WTV) demuxer.

Author
Zhentan Feng <spyfeng at="" gmail="" dot="" com>="">

Definition in file wtvenc.c.

Macro Definition Documentation

#define _   , 0,

Definition at line 40 of file wtvenc.c.

#define INDEX_BASE   0x2

Definition at line 36 of file wtvenc.c.

Referenced by write_packet(), write_stream_data(), and write_timestamp().

#define MAX_NB_INDEX   10

Definition at line 37 of file wtvenc.c.

Referenced by finish_chunk(), and write_chunk_header().

#define WTV_BIGSECTOR_SIZE   (1 << WTV_BIGSECTOR_BITS)

Definition at line 35 of file wtvenc.c.

Referenced by finish_file().

Typedef Documentation

typedef int WTVHeaderWriteFunc(AVIOContext *pb)

Definition at line 122 of file wtvenc.c.

Enumeration Type Documentation

Enumerator
WTV_TIMELINE_TABLE_0_HEADER_EVENTS 
WTV_TIMELINE_TABLE_0_ENTRIES_EVENTS 
WTV_TIMELINE 
WTV_TABLE_0_HEADER_LEGACY_ATTRIB 
WTV_TABLE_0_ENTRIES_LEGACY_ATTRIB 
WTV_TABLE_0_REDIRECTOR_LEGACY_ATTRIB 
WTV_TABLE_0_HEADER_TIME 
WTV_TABLE_0_ENTRIES_TIME 
WTV_FILES 

Definition at line 56 of file wtvenc.c.

Function Documentation

static void add_serial_pair ( WtvSyncEntry **  list,
int *  count,
int64_t  serial,
int64_t  value 
)
static

Definition at line 111 of file wtvenc.c.

Referenced by write_packet(), and write_sync().

static int attachment_value_size ( const AVPacket pkt,
const AVDictionaryEntry e 
)
static

Definition at line 628 of file wtvenc.c.

Referenced by write_table_entries_attrib(), and write_table_redirector_legacy_attrib().

static void finish_chunk ( AVFormatContext s)
static

Definition at line 222 of file wtvenc.c.

Referenced by write_stream_codec(), write_stream_data(), and write_sync().

static void finish_chunk_noindex ( AVFormatContext s)
static

Definition at line 182 of file wtvenc.c.

Referenced by finish_chunk(), and write_index().

static int finish_file ( AVFormatContext s,
enum WtvFileIndex  index,
int64_t  start_pos 
)
static

Pad the remainder of a file Write out fat table.

Returns
<0 on error

Definition at line 688 of file wtvenc.c.

Referenced by write_trailer().

static const ff_asf_guid* get_codec_guid ( enum AVCodecID  id,
const AVCodecGuid av_guid 
)
static

Definition at line 137 of file wtvenc.c.

Referenced by write_stream_codec_info().

static int metadata_header_size ( const char *  key)
static

Definition at line 611 of file wtvenc.c.

Referenced by write_table_redirector_legacy_attrib().

static void write_chunk_header ( AVFormatContext s,
const ff_asf_guid guid,
int  length,
int  stream_id 
)
static

Write chunk header.

If header chunk (0x80000000 set) then add to list of header chunks

Definition at line 150 of file wtvenc.c.

Referenced by write_chunk_header2(), write_packet(), write_sync(), and write_timestamp().

static void write_chunk_header2 ( AVFormatContext s,
const ff_asf_guid guid,
int  stream_id 
)
static

Definition at line 172 of file wtvenc.c.

Referenced by write_index(), write_stream_codec(), and write_stream_data().

static void write_fat ( AVIOContext pb,
int  start_sector,
int  nb_sectors,
int  shift 
)
static

Definition at line 549 of file wtvenc.c.

Referenced by write_fat_sector().

static int64_t write_fat_sector ( AVFormatContext s,
int64_t  start_pos,
int  nb_sectors,
int  sector_bits,
int  depth 
)
static

Definition at line 559 of file wtvenc.c.

Referenced by finish_file().

static int write_header ( AVFormatContext s)
static

Definition at line 346 of file wtvenc.c.

static void write_index ( AVFormatContext s)
static

Definition at line 197 of file wtvenc.c.

Referenced by finish_chunk(), and write_header().

static void write_metadata_header ( AVIOContext pb,
int  type,
const char *  key,
int  value_size 
)
static

Definition at line 603 of file wtvenc.c.

Referenced by write_table_entries_attrib(), write_tag(), and write_tag_int32().

static int write_packet ( AVFormatContext s,
AVPacket pkt 
)
static

Definition at line 429 of file wtvenc.c.

static int write_root_table ( AVFormatContext s,
int64_t  sector_pos 
)
static

Definition at line 502 of file wtvenc.c.

Referenced by write_trailer().

static int write_stream_codec ( AVFormatContext s,
AVStream st 
)
static

Definition at line 286 of file wtvenc.c.

Referenced by write_header().

static int write_stream_codec_info ( AVFormatContext s,
AVStream st 
)
static

Definition at line 230 of file wtvenc.c.

Referenced by write_stream_codec(), and write_stream_data().

static int write_stream_data ( AVFormatContext s,
AVStream st 
)
static

Definition at line 323 of file wtvenc.c.

Referenced by write_header().

static void write_sync ( AVFormatContext s)
static

Definition at line 306 of file wtvenc.c.

Referenced by write_header(), and write_packet().

static int write_table0_header_events ( AVIOContext pb)
static

Definition at line 463 of file wtvenc.c.

static int write_table0_header_legacy_attrib ( AVIOContext pb)
static

Definition at line 471 of file wtvenc.c.

static int write_table0_header_time ( AVIOContext pb)
static

Definition at line 483 of file wtvenc.c.

static void write_table_entries_attrib ( AVFormatContext s)
static

Definition at line 633 of file wtvenc.c.

Referenced by write_trailer().

static void write_table_entries_events ( AVFormatContext s)
static

Definition at line 579 of file wtvenc.c.

Referenced by write_trailer().

static void write_table_entries_time ( AVFormatContext s)
static

Definition at line 590 of file wtvenc.c.

Referenced by write_trailer().

static void write_table_redirector_legacy_attrib ( AVFormatContext s)
static

Definition at line 660 of file wtvenc.c.

Referenced by write_trailer().

static void write_tag ( AVIOContext pb,
const char *  key,
const char *  value 
)
static

Definition at line 622 of file wtvenc.c.

Referenced by write_table_entries_attrib().

static void write_tag_int32 ( AVIOContext pb,
const char *  key,
int  value 
)
static

Definition at line 616 of file wtvenc.c.

Referenced by write_table_entries_attrib().

static void write_timestamp ( AVFormatContext s,
AVPacket pkt 
)
static

Definition at line 411 of file wtvenc.c.

Referenced by write_packet().

static int write_trailer ( AVFormatContext s)
static

Definition at line 745 of file wtvenc.c.

Variable Documentation

AVOutputFormat ff_wtv_muxer
Initial value:
= {
.name = "wtv",
.long_name = NULL_IF_CONFIG_SMALL("Windows Television (WTV)"),
.extensions = "wtv",
.priv_data_size = sizeof(WtvContext),
.audio_codec = AV_CODEC_ID_AC3,
.video_codec = AV_CODEC_ID_MPEG2VIDEO,
.codec_tag = (const AVCodecTag* const []){ ff_codec_bmp_tags,
}
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification. ...
const AVCodecTag ff_codec_wav_tags[]
Definition: riff.c:334
const AVCodecTag ff_codec_bmp_tags[]
Definition: riff.c:35
preferred ID for MPEG-1/2 video decoding
static int write_trailer(AVFormatContext *s)
Definition: wtvenc.c:745
static int write_header(AVFormatContext *s)
Definition: wtvenc.c:346
static int write_packet(AVFormatContext *s, AVPacket *pkt)
Definition: wtvenc.c:429

Definition at line 797 of file wtvenc.c.

const uint8_t legacy_attrib[]
static
Initial value:
=
{'l'_'e'_'g'_'a'_'c'_'y'_'_'_'a'_'t'_'t'_'r'_'i'_'b', 0}
#define _
Definition: wtvenc.c:40

Definition at line 49 of file wtvenc.c.

Referenced by write_table0_header_legacy_attrib().

const ff_asf_guid sub_wtv_guid
static
Initial value:
=
{0x8C,0xC3,0xD2,0xC2,0x7E,0x9A,0xDA,0x11,0x8B,0xF7,0x00,0x07,0xE9,0x5E,0xAD,0x8D}

Definition at line 53 of file wtvenc.c.

Referenced by write_header().

const uint8_t table_0_header_legacy_attrib[]
static
Initial value:
=
{'t'_'a'_'b'_'l'_'e'_'.'_'0'_'.'_'h'_'e'_'a'_'d'_'e'_'r'_'.'_'l'_'e'_'g'_'a'_'c'_'y'_'_'_'a'_'t'_'t'_'r'_'i'_'b', 0}
#define _
Definition: wtvenc.c:40

Definition at line 43 of file wtvenc.c.

const uint8_t table_0_header_time[]
static
Initial value:
=
{'t'_'a'_'b'_'l'_'e'_'.'_'0'_'.'_'h'_'e'_'a'_'d'_'e'_'r'_'.'_'t'_'i'_'m'_'e', 0}
#define _
Definition: wtvenc.c:40

Definition at line 47 of file wtvenc.c.

const uint8_t table_0_redirector_legacy_attrib[]
static
Initial value:
=
{'t'_'a'_'b'_'l'_'e'_'.'_'0'_'.'_'r'_'e'_'d'_'i'_'r'_'e'_'c'_'t'_'o'_'r'_'.'_'l'_'e'_'g'_'a'_'c'_'y'_'_'_'a'_'t'_'t'_'r'_'i'_'b', 0}
#define _
Definition: wtvenc.c:40

Definition at line 45 of file wtvenc.c.

const uint8_t timeline_table_0_header_events[]
static
Initial value:
=
{'t'_'i'_'m'_'e'_'l'_'i'_'n'_'e'_'.'_'t'_'a'_'b'_'l'_'e'_'.'_'0'_'.'_'h'_'e'_'a'_'d'_'e'_'r'_'.'_'E'_'v'_'e'_'n'_'t'_'s', 0}
#define _
Definition: wtvenc.c:40

Definition at line 41 of file wtvenc.c.

const WTVRootEntryTable wtv_root_entry_table[]
static
Initial value:
= {
}
static int write_table0_header_time(AVIOContext *pb)
Definition: wtvenc.c:483
static const uint8_t table_0_redirector_legacy_attrib[]
Definition: wtvenc.c:45
const uint8_t ff_table_0_entries_legacy_attrib_le16[]
Definition: wtv.c:54
static const uint8_t table_0_header_time[]
Definition: wtvenc.c:47
const uint8_t ff_table_0_entries_time_le16[]
Definition: wtv.c:56
static int write_table0_header_legacy_attrib(AVIOContext *pb)
Definition: wtvenc.c:471
const uint8_t ff_timeline_table_0_entries_Events_le16[]
Definition: wtv.c:52
static const uint8_t timeline_table_0_header_events[]
Definition: wtvenc.c:41
NULL
Definition: eval.c:55
static int write_table0_header_events(AVIOContext *pb)
Definition: wtvenc.c:463
const uint8_t ff_timeline_le16[]
Definition: wtv.c:50
static const uint8_t table_0_header_legacy_attrib[]
Definition: wtvenc.c:43

Definition at line 491 of file wtvenc.c.

Referenced by write_root_table().