#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) |
RMStream * | ff_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 RAW_PACKET_SIZE 1000 |
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 | ) |
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.
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 |
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.
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 |
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.
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.
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 |
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] |
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] |
static int rm_assemble_video_frame | ( | AVFormatContext * | s, | |
ByteIOContext * | pb, | |||
RMDemuxContext * | rm, | |||
RMStream * | vst, | |||
AVPacket * | pkt, | |||
int | len, | |||
int * | pseq | |||
) | [static] |
static int rm_probe | ( | AVProbeData * | p | ) | [static] |
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] |
static int64_t rm_read_dts | ( | AVFormatContext * | s, | |
int | stream_index, | |||
int64_t * | ppos, | |||
int64_t | pos_limit | |||
) | [static] |
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] |
static int rm_read_header_old | ( | AVFormatContext * | s, | |
AVFormatParameters * | ap | |||
) | [static] |
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] |
static int sync | ( | AVFormatContext * | s, | |
int64_t * | timestamp, | |||
int * | flags, | |||
int * | stream_index, | |||
int64_t * | pos | |||
) | [static] |
Definition at line 531 of file rmdec.c.
Referenced by avi_read_packet(), ff_gen_syncpoint_search(), ogg_read_page(), rm_read_dts(), and rm_read_packet().
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 }, }
Initial value:
{ "rm", NULL_IF_CONFIG_SMALL("RealMedia format"), sizeof(RMDemuxContext), rm_probe, rm_read_header, rm_read_packet, rm_read_close, NULL, rm_read_dts, }
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().