FFmpeg
Data Structures | Macros | Functions | Variables
4xm.c File Reference

4X Technologies file demuxer by Mike Melanson (melan.nosp@m.son@.nosp@m.pcisy.nosp@m.s.ne.nosp@m.t) for more information on the .4xm file format, visit: http://www.pcisys.net/~melanson/codecs/ More...

#include "libavutil/intreadwrite.h"
#include "libavutil/intfloat.h"
#include "libavcodec/internal.h"
#include "avformat.h"
#include "internal.h"

Go to the source code of this file.

Data Structures

struct  AudioTrack
 
struct  FourxmDemuxContext
 

Macros

#define RIFF_TAG   MKTAG('R', 'I', 'F', 'F')
 
#define FOURXMV_TAG   MKTAG('4', 'X', 'M', 'V')
 
#define LIST_TAG   MKTAG('L', 'I', 'S', 'T')
 
#define HEAD_TAG   MKTAG('H', 'E', 'A', 'D')
 
#define TRK__TAG   MKTAG('T', 'R', 'K', '_')
 
#define MOVI_TAG   MKTAG('M', 'O', 'V', 'I')
 
#define VTRK_TAG   MKTAG('V', 'T', 'R', 'K')
 
#define STRK_TAG   MKTAG('S', 'T', 'R', 'K')
 
#define std__TAG   MKTAG('s', 't', 'd', '_')
 
#define name_TAG   MKTAG('n', 'a', 'm', 'e')
 
#define vtrk_TAG   MKTAG('v', 't', 'r', 'k')
 
#define strk_TAG   MKTAG('s', 't', 'r', 'k')
 
#define ifrm_TAG   MKTAG('i', 'f', 'r', 'm')
 
#define pfrm_TAG   MKTAG('p', 'f', 'r', 'm')
 
#define cfrm_TAG   MKTAG('c', 'f', 'r', 'm')
 
#define ifr2_TAG   MKTAG('i', 'f', 'r', '2')
 
#define pfr2_TAG   MKTAG('p', 'f', 'r', '2')
 
#define cfr2_TAG   MKTAG('c', 'f', 'r', '2')
 
#define snd__TAG   MKTAG('s', 'n', 'd', '_')
 
#define vtrk_SIZE   0x44
 
#define strk_SIZE   0x28
 
#define GET_LIST_HEADER()
 

Functions

static int fourxm_probe (const AVProbeData *p)
 
static int parse_vtrk (AVFormatContext *s, FourxmDemuxContext *fourxm, uint8_t *buf, int size, int left)
 
static int parse_strk (AVFormatContext *s, FourxmDemuxContext *fourxm, uint8_t *buf, int size, int left)
 
static int fourxm_read_header (AVFormatContext *s)
 
static int fourxm_read_packet (AVFormatContext *s, AVPacket *pkt)
 
static int fourxm_read_close (AVFormatContext *s)
 

Variables

AVInputFormat ff_fourxm_demuxer
 

Detailed Description

4X Technologies file demuxer by Mike Melanson (melan.nosp@m.son@.nosp@m.pcisy.nosp@m.s.ne.nosp@m.t) for more information on the .4xm file format, visit: http://www.pcisys.net/~melanson/codecs/

Definition in file 4xm.c.

Macro Definition Documentation

#define RIFF_TAG   MKTAG('R', 'I', 'F', 'F')

Definition at line 36 of file 4xm.c.

Referenced by fourxm_probe().

#define FOURXMV_TAG   MKTAG('4', 'X', 'M', 'V')

Definition at line 37 of file 4xm.c.

Referenced by fourxm_probe().

#define LIST_TAG   MKTAG('L', 'I', 'S', 'T')

Definition at line 38 of file 4xm.c.

Referenced by fourxm_read_packet().

#define HEAD_TAG   MKTAG('H', 'E', 'A', 'D')

Definition at line 39 of file 4xm.c.

Referenced by fourxm_read_header().

#define TRK__TAG   MKTAG('T', 'R', 'K', '_')

Definition at line 40 of file 4xm.c.

#define MOVI_TAG   MKTAG('M', 'O', 'V', 'I')

Definition at line 41 of file 4xm.c.

Referenced by fourxm_read_header().

#define VTRK_TAG   MKTAG('V', 'T', 'R', 'K')

Definition at line 42 of file 4xm.c.

#define STRK_TAG   MKTAG('S', 'T', 'R', 'K')

Definition at line 43 of file 4xm.c.

#define std__TAG   MKTAG('s', 't', 'd', '_')

Definition at line 44 of file 4xm.c.

Referenced by fourxm_read_header().

#define name_TAG   MKTAG('n', 'a', 'm', 'e')

Definition at line 45 of file 4xm.c.

#define vtrk_TAG   MKTAG('v', 't', 'r', 'k')

Definition at line 46 of file 4xm.c.

Referenced by fourxm_read_header().

#define strk_TAG   MKTAG('s', 't', 'r', 'k')

Definition at line 47 of file 4xm.c.

Referenced by fourxm_read_header().

#define ifrm_TAG   MKTAG('i', 'f', 'r', 'm')

Definition at line 48 of file 4xm.c.

Referenced by fourxm_read_packet().

#define pfrm_TAG   MKTAG('p', 'f', 'r', 'm')

Definition at line 49 of file 4xm.c.

Referenced by fourxm_read_packet().

#define cfrm_TAG   MKTAG('c', 'f', 'r', 'm')

Definition at line 50 of file 4xm.c.

Referenced by fourxm_read_packet().

#define ifr2_TAG   MKTAG('i', 'f', 'r', '2')

Definition at line 51 of file 4xm.c.

Referenced by fourxm_read_packet().

#define pfr2_TAG   MKTAG('p', 'f', 'r', '2')

Definition at line 52 of file 4xm.c.

Referenced by fourxm_read_packet().

#define cfr2_TAG   MKTAG('c', 'f', 'r', '2')

Definition at line 53 of file 4xm.c.

Referenced by fourxm_read_packet().

#define snd__TAG   MKTAG('s', 'n', 'd', '_')

Definition at line 54 of file 4xm.c.

Referenced by fourxm_read_packet().

#define vtrk_SIZE   0x44

Definition at line 56 of file 4xm.c.

Referenced by parse_vtrk().

#define strk_SIZE   0x28

Definition at line 57 of file 4xm.c.

Referenced by parse_strk().

#define GET_LIST_HEADER ( )
Value:
fourcc_tag = avio_rl32(pb); \
if (fourcc_tag != LIST_TAG) \
fourcc_tag = avio_rl32(pb);
#define AVERROR_INVALIDDATA
Invalid data found when processing input.
Definition: error.h:59
ptrdiff_t size
Definition: opengl_enc.c:100
unsigned int avio_rl32(AVIOContext *s)
Definition: aviobuf.c:772
if(ret)
#define LIST_TAG
Definition: 4xm.c:38
these buffered frames must be flushed immediately if a new input produces new the filter must not call request_frame to get more It must just process the frame or queue it The task of requesting more frames is left to the filter s request_frame method or the application If a filter has several the filter must be ready for frames arriving randomly on any input any filter with several inputs will most likely require some kind of queuing mechanism It is perfectly acceptable to have a limited queue and to drop frames when the inputs are too unbalanced request_frame For filters that do not use the this method is called when a frame is wanted on an output For a it should directly call filter_frame on the corresponding output For a if there are queued frames already one of these frames should be pushed If the filter should request a frame on one of its repeatedly until at least one frame has been pushed Return or at least make progress towards producing a it should return

Definition at line 59 of file 4xm.c.

Referenced by fourxm_read_header().

Function Documentation

static int fourxm_probe ( const AVProbeData p)
static

Definition at line 84 of file 4xm.c.

static int parse_vtrk ( AVFormatContext s,
FourxmDemuxContext fourxm,
uint8_t buf,
int  size,
int  left 
)
static

Definition at line 93 of file 4xm.c.

Referenced by fourxm_read_header().

static int parse_strk ( AVFormatContext s,
FourxmDemuxContext fourxm,
uint8_t buf,
int  size,
int  left 
)
static

Definition at line 127 of file 4xm.c.

Referenced by fourxm_read_header().

static int fourxm_read_header ( AVFormatContext s)
static

Definition at line 206 of file 4xm.c.

static int fourxm_read_packet ( AVFormatContext s,
AVPacket pkt 
)
static

Definition at line 288 of file 4xm.c.

static int fourxm_read_close ( AVFormatContext s)
static

Definition at line 380 of file 4xm.c.

Variable Documentation

AVInputFormat ff_fourxm_demuxer
Initial value:
= {
.name = "4xm",
.long_name = NULL_IF_CONFIG_SMALL("4X Technologies"),
.priv_data_size = sizeof(FourxmDemuxContext),
}
static int fourxm_read_packet(AVFormatContext *s, AVPacket *pkt)
Definition: 4xm.c:288
static int fourxm_probe(const AVProbeData *p)
Definition: 4xm.c:84
static av_cold int read_close(AVFormatContext *ctx)
Definition: libcdio.c:145
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification. ...
Definition: internal.h:186
static int fourxm_read_close(AVFormatContext *s)
Definition: 4xm.c:380
static int fourxm_read_header(AVFormatContext *s)
Definition: 4xm.c:206
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 read_probe(const AVProbeData *pd)
Definition: jvdec.c:55

Definition at line 389 of file 4xm.c.