FFmpeg
Data Structures | Macros | Enumerations | Functions | Variables
ty.c File Reference
#include "libavutil/intreadwrite.h"
#include "avformat.h"
#include "internal.h"
#include "mpeg.h"

Go to the source code of this file.

Data Structures

struct  TyRecHdr
 
struct  TySeqTable
 
struct  TYDemuxContext
 

Macros

#define SERIES1_PES_LENGTH   11 /* length of audio PES hdr on S1 */
 
#define SERIES2_PES_LENGTH   16 /* length of audio PES hdr on S2 */
 
#define AC3_PES_LENGTH   14 /* length of audio PES hdr for AC3 */
 
#define VIDEO_PES_LENGTH   16 /* length of video PES header */
 
#define DTIVO_PTS_OFFSET   6 /* offs into PES for MPEG PTS on DTivo */
 
#define SA_PTS_OFFSET   9 /* offset into PES for MPEG PTS on SA */
 
#define AC3_PTS_OFFSET   9 /* offset into PES for AC3 PTS on DTivo */
 
#define VIDEO_PTS_OFFSET   9 /* offset into PES for video PTS on all */
 
#define AC3_PKT_LENGTH   1536 /* size of TiVo AC3 pkts (w/o PES hdr) */
 
#define TIVO_PES_FILEID   0xf5467abd
 
#define CHUNK_SIZE   (128 * 1024)
 
#define CHUNK_PEEK_COUNT   3 /* number of chunks to probe */
 

Enumerations

enum  TiVo_type { TIVO_TYPE_UNKNOWN, TIVO_TYPE_SA, TIVO_TYPE_DTIVO }
 
enum  TiVo_series { TIVO_SERIES_UNKNOWN, TIVO_SERIES1, TIVO_SERIES2 }
 
enum  TiVo_audio { TIVO_AUDIO_UNKNOWN, TIVO_AUDIO_AC3, TIVO_AUDIO_MPEG }
 

Functions

static int ty_probe (const AVProbeData *p)
 
static TyRecHdrparse_chunk_headers (const uint8_t *buf, int num_recs)
 
static int find_es_header (const uint8_t *header, const uint8_t *buffer, int search_len)
 
static int analyze_chunk (AVFormatContext *s, const uint8_t *chunk)
 
static int ty_read_header (AVFormatContext *s)
 
static void parse_master (AVFormatContext *s)
 
static int get_chunk (AVFormatContext *s)
 
static int demux_video (AVFormatContext *s, TyRecHdr *rec_hdr, AVPacket *pkt)
 
static int check_sync_pes (AVFormatContext *s, AVPacket *pkt, int32_t offset, int32_t rec_len)
 
static int demux_audio (AVFormatContext *s, TyRecHdr *rec_hdr, AVPacket *pkt)
 
static int ty_read_packet (AVFormatContext *s, AVPacket *pkt)
 
static int ty_read_close (AVFormatContext *s)
 

Variables

static const uint8_t ty_VideoPacket [] = { 0x00, 0x00, 0x01, 0xe0 }
 
static const uint8_t ty_MPEGAudioPacket [] = { 0x00, 0x00, 0x01, 0xc0 }
 
static const uint8_t ty_AC3AudioPacket [] = { 0x00, 0x00, 0x01, 0xbd }
 
AVInputFormat ff_ty_demuxer
 

Macro Definition Documentation

#define SERIES1_PES_LENGTH   11 /* length of audio PES hdr on S1 */

Definition at line 31 of file ty.c.

Referenced by analyze_chunk().

#define SERIES2_PES_LENGTH   16 /* length of audio PES hdr on S2 */

Definition at line 32 of file ty.c.

Referenced by analyze_chunk().

#define AC3_PES_LENGTH   14 /* length of audio PES hdr for AC3 */

Definition at line 33 of file ty.c.

Referenced by analyze_chunk().

#define VIDEO_PES_LENGTH   16 /* length of video PES header */

Definition at line 34 of file ty.c.

Referenced by demux_video().

#define DTIVO_PTS_OFFSET   6 /* offs into PES for MPEG PTS on DTivo */

Definition at line 35 of file ty.c.

Referenced by analyze_chunk().

#define SA_PTS_OFFSET   9 /* offset into PES for MPEG PTS on SA */

Definition at line 36 of file ty.c.

Referenced by analyze_chunk(), and demux_audio().

#define AC3_PTS_OFFSET   9 /* offset into PES for AC3 PTS on DTivo */

Definition at line 37 of file ty.c.

Referenced by analyze_chunk().

#define VIDEO_PTS_OFFSET   9 /* offset into PES for video PTS on all */

Definition at line 38 of file ty.c.

Referenced by demux_video().

#define AC3_PKT_LENGTH   1536 /* size of TiVo AC3 pkts (w/o PES hdr) */

Definition at line 39 of file ty.c.

Referenced by demux_audio().

#define TIVO_PES_FILEID   0xf5467abd

Definition at line 45 of file ty.c.

Referenced by analyze_chunk(), get_chunk(), and ty_probe().

#define CHUNK_SIZE   (128 * 1024)

Definition at line 46 of file ty.c.

Referenced by analyze_chunk(), get_chunk(), parse_master(), ty_probe(), ty_read_header(), and ty_read_packet().

#define CHUNK_PEEK_COUNT   3 /* number of chunks to probe */

Definition at line 47 of file ty.c.

Referenced by ty_read_header().

Enumeration Type Documentation

enum TiVo_type
Enumerator
TIVO_TYPE_UNKNOWN 
TIVO_TYPE_SA 
TIVO_TYPE_DTIVO 

Definition at line 57 of file ty.c.

Enumerator
TIVO_SERIES_UNKNOWN 
TIVO_SERIES1 
TIVO_SERIES2 

Definition at line 63 of file ty.c.

enum TiVo_audio
Enumerator
TIVO_AUDIO_UNKNOWN 
TIVO_AUDIO_AC3 
TIVO_AUDIO_MPEG 

Definition at line 69 of file ty.c.

Function Documentation

static int ty_probe ( const AVProbeData p)
static

Definition at line 109 of file ty.c.

static TyRecHdr* parse_chunk_headers ( const uint8_t buf,
int  num_recs 
)
static

Definition at line 124 of file ty.c.

Referenced by analyze_chunk(), and get_chunk().

static int find_es_header ( const uint8_t header,
const uint8_t buffer,
int  search_len 
)
static

Definition at line 163 of file ty.c.

Referenced by analyze_chunk(), demux_audio(), and demux_video().

static int analyze_chunk ( AVFormatContext s,
const uint8_t chunk 
)
static

Definition at line 175 of file ty.c.

Referenced by ty_read_header().

static int ty_read_header ( AVFormatContext s)
static

Definition at line 286 of file ty.c.

static void parse_master ( AVFormatContext s)
static

Definition at line 345 of file ty.c.

Referenced by get_chunk().

static int get_chunk ( AVFormatContext s)
static

Definition at line 394 of file ty.c.

Referenced by ty_read_packet().

static int demux_video ( AVFormatContext s,
TyRecHdr rec_hdr,
AVPacket pkt 
)
static

Definition at line 452 of file ty.c.

Referenced by ty_read_packet().

static int check_sync_pes ( AVFormatContext s,
AVPacket pkt,
int32_t  offset,
int32_t  rec_len 
)
static

Definition at line 538 of file ty.c.

Referenced by demux_audio().

static int demux_audio ( AVFormatContext s,
TyRecHdr rec_hdr,
AVPacket pkt 
)
static

Definition at line 576 of file ty.c.

Referenced by ty_read_packet().

static int ty_read_packet ( AVFormatContext s,
AVPacket pkt 
)
static

Definition at line 718 of file ty.c.

static int ty_read_close ( AVFormatContext s)
static

Definition at line 769 of file ty.c.

Variable Documentation

const uint8_t ty_VideoPacket[] = { 0x00, 0x00, 0x01, 0xe0 }
static

Definition at line 41 of file ty.c.

Referenced by demux_video().

const uint8_t ty_MPEGAudioPacket[] = { 0x00, 0x00, 0x01, 0xc0 }
static

Definition at line 42 of file ty.c.

Referenced by analyze_chunk(), and demux_audio().

const uint8_t ty_AC3AudioPacket[] = { 0x00, 0x00, 0x01, 0xbd }
static

Definition at line 43 of file ty.c.

Referenced by demux_audio().

AVInputFormat ff_ty_demuxer
Initial value:
= {
.name = "ty",
.long_name = NULL_IF_CONFIG_SMALL("TiVo TY Stream"),
.priv_data_size = sizeof(TYDemuxContext),
.extensions = "ty,ty+",
}
static int ty_read_header(AVFormatContext *s)
Definition: ty.c:286
static av_cold int read_close(AVFormatContext *ctx)
Definition: libcdio.c:145
static int ty_probe(const AVProbeData *p)
Definition: ty.c:109
#define AVFMT_TS_DISCONT
Format allows timestamp discontinuities.
Definition: avformat.h:469
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification. ...
Definition: internal.h:186
static int read_header(FFV1Context *f)
Definition: ffv1dec.c:530
static int read_packet(void *opaque, uint8_t *buf, int buf_size)
Definition: avio_reading.c:42
static int ty_read_packet(AVFormatContext *s, AVPacket *pkt)
Definition: ty.c:718
#define flags(name, subs,...)
Definition: cbs_av1.c:561
static int read_probe(const AVProbeData *pd)
Definition: jvdec.c:55
static int ty_read_close(AVFormatContext *s)
Definition: ty.c:769

Definition at line 779 of file ty.c.