libavformat/rmdec.c File Reference

#include "libavutil/avstring.h"
#include "libavutil/intreadwrite.h"
#include "avformat.h"
#include "riff.h"
#include "rm.h"

Go to the source code of this file.

Data Structures

struct  RMStream
struct  RMDemuxContext

Defines

#define RAW_PACKET_SIZE   1000

Functions

static void get_strl (ByteIOContext *pb, char *buf, int buf_size, int len)
static void get_str8 (ByteIOContext *pb, char *buf, int buf_size)
static int rm_read_extradata (ByteIOContext *pb, AVCodecContext *avctx, unsigned size)
static void rm_read_metadata (AVFormatContext *s, int wide)
RMStreamff_rm_alloc_rmstream (void)
void ff_rm_free_rmstream (RMStream *rms)
static int rm_read_audio_stream_info (AVFormatContext *s, ByteIOContext *pb, AVStream *st, RMStream *ast, int read_all)
int ff_rm_read_mdpr_codecdata (AVFormatContext *s, ByteIOContext *pb, AVStream *st, RMStream *rst, int codec_data_size)
 Read the MDPR chunk, which contains stream-specific codec initialization parameters.
static int rm_read_index (AVFormatContext *s)
 this function assumes that the demuxer has already seeked to the start of the INDX chunk, and will bail out if not.
static int rm_read_header_old (AVFormatContext *s, AVFormatParameters *ap)
static int rm_read_header (AVFormatContext *s, AVFormatParameters *ap)
static int get_num (ByteIOContext *pb, int *len)
static int sync (AVFormatContext *s, int64_t *timestamp, int *flags, int *stream_index, int64_t *pos)
static int rm_assemble_video_frame (AVFormatContext *s, ByteIOContext *pb, RMDemuxContext *rm, RMStream *vst, AVPacket *pkt, int len, int *pseq)
static void rm_ac3_swap_bytes (AVStream *st, AVPacket *pkt)
void ff_rm_reorder_sipr_data (uint8_t *buf, int sub_packet_h, int framesize)
 Perform 4-bit block reordering for SIPR data.
int ff_rm_parse_packet (AVFormatContext *s, ByteIOContext *pb, AVStream *st, RMStream *ast, int len, AVPacket *pkt, int *seq, int flags, int64_t timestamp)
 Parse one rm-stream packet from the input bytestream.
int ff_rm_retrieve_cache (AVFormatContext *s, ByteIOContext *pb, AVStream *st, RMStream *ast, AVPacket *pkt)
 Retrieve one cached packet from the rm-context.
static int rm_read_packet (AVFormatContext *s, AVPacket *pkt)
static int rm_read_close (AVFormatContext *s)
static int rm_probe (AVProbeData *p)
static int64_t rm_read_dts (AVFormatContext *s, int stream_index, int64_t *ppos, int64_t pos_limit)

Variables

static const AVCodecTag rm_codec_tags []
static const unsigned char sipr_swaps [38][2]
const unsigned char ff_sipr_subpk_size [4] = { 29, 19, 37, 20 }
AVInputFormat rm_demuxer
AVInputFormat rdt_demuxer


Define Documentation

#define RAW_PACKET_SIZE   1000

Definition at line 529 of file rmdec.c.

Referenced by rm_read_packet().


Function Documentation

RMStream* ff_rm_alloc_rmstream ( void   ) 

Definition at line 128 of file rmdec.c.

Referenced by rdt_parse_sdp_line(), rm_read_header(), and rm_read_header_old().

void ff_rm_free_rmstream ( RMStream rms  ) 

Definition at line 135 of file rmdec.c.

Referenced by rdt_free_context(), and rm_read_close().

int ff_rm_parse_packet ( AVFormatContext s,
ByteIOContext pb,
AVStream st,
RMStream rst,
int  len,
AVPacket pkt,
int *  seq,
int  flags,
int64_t  ts 
)

Parse one rm-stream packet from the input bytestream.

Parameters:
s context containing RMContext and ByteIOContext for stream reading
pb context to read the data from
st stream to which the packet to be read belongs
rst Real-specific stream information
len packet length to read from the input
pkt packet location to store the parsed packet data
seq pointer to an integer containing the sequence number, may be updated
flags the packet flags
ts timestamp of the current packet
Returns:
<0 on error, 0 if a packet was placed in the pkt pointer. A value >0 means that no data was placed in pkt, but that cached data is available by calling ff_rm_retrieve_cache().

Definition at line 722 of file rmdec.c.

Referenced by rdt_parse_packet(), and rm_read_packet().

int ff_rm_read_mdpr_codecdata ( AVFormatContext s,
ByteIOContext pb,
AVStream st,
RMStream rst,
int  codec_data_size 
)

Read the MDPR chunk, which contains stream-specific codec initialization parameters.

Parameters:
s context containing RMContext and ByteIOContext for stream reading
pb context to read the data from
st the stream that the MDPR chunk belongs to and where to store the parameters read from the chunk into
rst real-specific stream information
codec_data_size size of the MDPR chunk
Returns:
0 on success, errno codes on error

Definition at line 288 of file rmdec.c.

Referenced by rdt_load_mdpr(), and rm_read_header().

void ff_rm_reorder_sipr_data ( uint8_t *  buf,
int  sub_packet_h,
int  framesize 
)

Perform 4-bit block reordering for SIPR data.

Todo:
This can be optimized, e.g. use memcpy() if data blocks are aligned

Definition at line 699 of file rmdec.c.

Referenced by ff_rm_parse_packet(), and matroska_parse_block().

int ff_rm_retrieve_cache ( AVFormatContext s,
ByteIOContext pb,
AVStream st,
RMStream rst,
AVPacket pkt 
)

Retrieve one cached packet from the rm-context.

The real container can store several packets (as interpreted by the codec) in a single container packet, which means the demuxer holds some back when the first container packet is parsed and returned. The result is that rm->audio_pkt_cnt is a positive number, the amount of cached packets. Using this function, each of those packets can be retrieved sequentially.

Parameters:
s context containing RMContext and ByteIOContext for stream reading
pb context to read the data from
st stream that this packet belongs to
rst Real-specific stream information
pkt location to store the packet data
Returns:
the number of samples left for subsequent calls to this same function, or 0 if all samples have been retrieved.

Definition at line 813 of file rmdec.c.

Referenced by rdt_parse_packet(), and rm_read_packet().

static int get_num ( ByteIOContext pb,
int *  len 
) [static]

Definition at line 512 of file rmdec.c.

Referenced by rm_assemble_video_frame().

static void get_str8 ( ByteIOContext pb,
char *  buf,
int  buf_size 
) [static]

Definition at line 98 of file rmdec.c.

Referenced by rm_read_audio_stream_info(), and rm_read_header().

static void get_strl ( ByteIOContext pb,
char *  buf,
int  buf_size,
int  len 
) [inline, static]

Definition at line 84 of file rmdec.c.

Referenced by get_str8(), and rm_read_metadata().

static void rm_ac3_swap_bytes ( AVStream st,
AVPacket pkt 
) [inline, static]

Definition at line 681 of file rmdec.c.

Referenced by ff_rm_parse_packet().

static int rm_assemble_video_frame ( AVFormatContext s,
ByteIOContext pb,
RMDemuxContext rm,
RMStream vst,
AVPacket pkt,
int  len,
int *  pseq 
) [static]

Definition at line 599 of file rmdec.c.

Referenced by ff_rm_parse_packet().

static int rm_probe ( AVProbeData p  )  [static]

Definition at line 901 of file rmdec.c.

static int rm_read_audio_stream_info ( AVFormatContext s,
ByteIOContext pb,
AVStream st,
RMStream ast,
int  read_all 
) [static]

Definition at line 140 of file rmdec.c.

Referenced by ff_rm_read_mdpr_codecdata(), and rm_read_header_old().

static int rm_read_close ( AVFormatContext s  )  [static]

Definition at line 891 of file rmdec.c.

static int64_t rm_read_dts ( AVFormatContext s,
int  stream_index,
int64_t *  ppos,
int64_t  pos_limit 
) [static]

Definition at line 914 of file rmdec.c.

static int rm_read_extradata ( ByteIOContext pb,
AVCodecContext avctx,
unsigned  size 
) [static]

Definition at line 103 of file rmdec.c.

Referenced by ff_rm_read_mdpr_codecdata(), and rm_read_audio_stream_info().

static int rm_read_header ( AVFormatContext s,
AVFormatParameters ap 
) [static]

Definition at line 406 of file rmdec.c.

static int rm_read_header_old ( AVFormatContext s,
AVFormatParameters ap 
) [static]

Definition at line 393 of file rmdec.c.

Referenced by rm_read_header().

static int rm_read_index ( AVFormatContext s  )  [static]

this function assumes that the demuxer has already seeked to the start of the INDX chunk, and will bail out if not.

Definition at line 351 of file rmdec.c.

Referenced by rm_read_header().

static void rm_read_metadata ( AVFormatContext s,
int  wide 
) [static]

Definition at line 117 of file rmdec.c.

Referenced by rm_read_audio_stream_info(), and rm_read_header().

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

Definition at line 839 of file rmdec.c.

static int sync ( AVFormatContext s,
int64_t *  timestamp,
int *  flags,
int *  stream_index,
int64_t *  pos 
) [static]


Variable Documentation

const unsigned char ff_sipr_subpk_size[4] = { 29, 19, 37, 20 }

Definition at line 82 of file rmdec.c.

Referenced by matroska_read_header(), and rm_read_audio_stream_info().

Initial value:

 {
    "rdt",
    NULL_IF_CONFIG_SMALL("RDT demuxer"),
    sizeof(RMDemuxContext),
    NULL,
    NULL,
    NULL,
    rm_read_close,
}

Definition at line 969 of file rmdec.c.

Referenced by rdt_new_context().

const AVCodecTag rm_codec_tags[] [static]

Initial value:

 {
    { CODEC_ID_RV10,   MKTAG('R','V','1','0') },
    { CODEC_ID_RV20,   MKTAG('R','V','2','0') },
    { CODEC_ID_RV20,   MKTAG('R','V','T','R') },
    { CODEC_ID_RV30,   MKTAG('R','V','3','0') },
    { CODEC_ID_RV40,   MKTAG('R','V','4','0') },
    { CODEC_ID_AC3,    MKTAG('d','n','e','t') },
    { CODEC_ID_RA_144, MKTAG('l','p','c','J') },
    { CODEC_ID_RA_288, MKTAG('2','8','_','8') },
    { CODEC_ID_COOK,   MKTAG('c','o','o','k') },
    { CODEC_ID_ATRAC3, MKTAG('a','t','r','c') },
    { CODEC_ID_SIPR,   MKTAG('s','i','p','r') },
    { CODEC_ID_AAC,    MKTAG('r','a','a','c') },
    { CODEC_ID_AAC,    MKTAG('r','a','c','p') },
    { CODEC_ID_NONE },
}

Definition at line 52 of file rmdec.c.

Initial value:

Definition at line 957 of file rmdec.c.

const unsigned char sipr_swaps[38][2] [static]

Initial value:

 {
    {  0, 63 }, {  1, 22 }, {  2, 44 }, {  3, 90 },
    {  5, 81 }, {  7, 31 }, {  8, 86 }, {  9, 58 },
    { 10, 36 }, { 12, 68 }, { 13, 39 }, { 14, 73 },
    { 15, 53 }, { 16, 69 }, { 17, 57 }, { 19, 88 },
    { 20, 34 }, { 21, 71 }, { 24, 46 }, { 25, 94 },
    { 26, 54 }, { 28, 75 }, { 29, 50 }, { 32, 70 },
    { 33, 92 }, { 35, 74 }, { 38, 85 }, { 40, 56 },
    { 42, 87 }, { 43, 65 }, { 45, 59 }, { 48, 79 },
    { 49, 93 }, { 51, 89 }, { 55, 95 }, { 61, 76 },
    { 67, 83 }, { 77, 80 }
}

Definition at line 69 of file rmdec.c.

Referenced by ff_rm_reorder_sipr_data().


Generated on Fri Oct 26 02:36:55 2012 for FFmpeg by  doxygen 1.5.8