41#define XMV_MIN_HEADER_SIZE 36
44#define XMV_AUDIO_ADPCM51_FRONTLEFTRIGHT 1
46#define XMV_AUDIO_ADPCM51_FRONTCENTERLOW 2
48#define XMV_AUDIO_ADPCM51_REARLEFTRIGHT 4
51#define XMV_AUDIO_ADPCM51 (XMV_AUDIO_ADPCM51_FRONTLEFTRIGHT | \
52 XMV_AUDIO_ADPCM51_FRONTCENTERLOW | \
53 XMV_AUDIO_ADPCM51_REARLEFTRIGHT)
55#define XMV_BLOCK_ALIGN_SIZE 36
120 uint32_t file_version;
125 file_version =
AV_RL32(p->buf + 16);
126 if ((file_version == 0) || (file_version > 4))
129 if (!memcmp(p->buf + 12,
"xobX", 4))
149 uint32_t file_version;
150 uint32_t this_packet_size;
151 uint16_t audio_track;
163 if ((file_version != 4) && (file_version != 2))
206 "(0x%04X)\n", packet->
flags);
220 if (this_packet_size < xmv->next_packet_offset)
234 int mspel_bit = !!(
data & 0x01);
236 int abt_flag = !!(
data & 0x04);
237 int j_type_bit = !!(
data & 0x08);
238 int top_left_mv_flag = !!(
data & 0x10);
239 int per_mb_rl_bit = !!(
data & 0x20);
240 int slice_count = (
data >> 6) & 7;
246 data |= mspel_bit << 15;
248 data |= abt_flag << 13;
249 data |= j_type_bit << 12;
250 data |= top_left_mv_flag << 11;
251 data |= per_mb_rl_bit << 10;
252 data |= slice_count << 7;
264 uint16_t audio_track;
265 uint64_t data_offset;
351 if ((packet->
data_size == 0) && (audio_track != 0))
516 video->
pts += frame_timestamp;
570 .p.extensions =
"xmv",
simple assert() macros that are a bit more flexible than ISO C assert().
#define av_assert0(cond)
assert() equivalent, that is always enabled.
int64_t avio_seek(AVIOContext *s, int64_t offset, int whence)
fseek() equivalent for AVIOContext.
static av_always_inline int64_t avio_tell(AVIOContext *s)
ftell() equivalent for AVIOContext.
unsigned int avio_rl16(AVIOContext *s)
int64_t avio_skip(AVIOContext *s, int64_t offset)
Skip given number of bytes forward.
unsigned int avio_rl32(AVIOContext *s)
int ffio_read_size(AVIOContext *s, unsigned char *buf, int size)
Read size bytes from AVIOContext into buf.
static int read_packet(void *opaque, uint8_t *buf, int buf_size)
static int read_probe(const AVProbeData *p)
#define FF_INFMT_FLAG_INIT_CLEANUP
For an FFInputFormat with this flag set read_close() needs to be called by the caller upon read_heade...
static int read_header(FFV1Context *f, RangeCoder *c)
static const uint8_t frame_size[4]
AVCodecID
Identify the syntax and semantics of the bitstream.
#define AV_PKT_FLAG_KEY
The packet contains a keyframe.
AVStream * avformat_new_stream(AVFormatContext *s, const struct AVCodec *c)
Add a new stream to a media file.
#define AVERROR_INVALIDDATA
Invalid data found when processing input.
#define AVERROR_EOF
End of file.
#define AV_LOG_WARNING
Something somehow does not look correct.
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered.
#define AV_NOPTS_VALUE
Undefined timestamp value.
static void loop_filter(const H264Context *h, H264SliceContext *sl, int start_x, int end_x)
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification.
static av_cold int read_close(AVFormatContext *ctx)
#define MKBETAG(a, b, c, d)
void * av_calloc(size_t nmemb, size_t size)
Memory handling functions.
internal header for RIFF based (de)muxers do NOT include this in end user applications
enum AVCodecID ff_wav_codec_get_id(unsigned int tag, int bps)
int nb_channels
Number of channels in this layout.
int extradata_size
Size of the extradata content in bytes.
int height
The height of the video frame in pixels.
int bits_per_coded_sample
The number of bits per sample in the codedwords.
AVChannelLayout ch_layout
The channel layout and number of channels.
int width
The width of the video frame in pixels.
int64_t bit_rate
The average bitrate of the encoded data (in bits per second).
enum AVMediaType codec_type
General type of the encoded data.
int block_align
The number of bytes per coded audio frame, required by some formats.
uint32_t codec_tag
Additional information about the codec (corresponds to the AVI FOURCC).
uint8_t * extradata
Extra binary data needed for initializing the decoder, codec-dependent.
enum AVCodecID codec_id
Specific type of the encoded data (the codec used).
int sample_rate
The number of audio samples per second.
This structure stores compressed data.
This structure contains the data a format has to probe a file.
AVCodecParameters * codecpar
Codec parameters associated with this stream.
int64_t duration
Decoding: duration of the stream, in stream time base.
int index
stream index in AVFormatContext
An audio packet with an XMV file.
uint16_t channels
Number of channels.
int32_t sample_rate
Sampling rate.
uint64_t bit_rate
Bits of compressed data per second.
uint16_t compression
The type of compression.
unsigned block_align
Bytes per compressed block.
uint64_t data_offset
The offset of the audio data within the file.
int stream_index
The decoder stream index for this audio packet.
enum AVCodecID codec_id
The codec ID of the compression scheme.
uint16_t bits_per_sample
Bits per compressed sample.
uint32_t data_size
The size of the remaining audio data.
uint32_t frame_size
Number of bytes to put into an audio frame.
Context for demuxing an XMV file.
uint32_t next_packet_size
Size of the next packet.
XMVVideoPacket video
The video packet contained in each packet.
uint64_t this_packet_offset
Offset of the current packet.
uint16_t audio_track_count
Number of audio track in this file.
uint16_t current_stream
The index of the stream currently handling.
XMVAudioPacket * audio
The audio packets contained in each packet.
uint16_t stream_count
The number of streams in this file.
uint64_t next_packet_offset
Offset of the next packet.
uint32_t this_packet_size
Size of the current packet.
A video packet with an XMV file.
int64_t pts
PTS of the most current video frame.
uint64_t data_offset
The offset of the video data within the file.
int64_t last_pts
PTS of the last video frame.
uint32_t frame_count
The amount of frames within this video packet.
uint8_t extradata[4]
The extra data.
uint32_t data_size
The size of the remaining video data.
uint32_t current_frame
The current frame within this video packet.
int stream_index
The decoder stream index for this video packet.
int has_extradata
Does the video packet contain extra data?
#define avpriv_request_sample(...)
static int xmv_probe(const AVProbeData *p)
static int xmv_read_close(AVFormatContext *s)
#define XMV_BLOCK_ALIGN_SIZE
static int xmv_fetch_audio_packet(AVFormatContext *s, AVPacket *pkt, uint32_t stream)
static int xmv_fetch_video_packet(AVFormatContext *s, AVPacket *pkt)
#define XMV_MIN_HEADER_SIZE
The min size of an XMV header.
static int xmv_process_packet_header(AVFormatContext *s)
#define XMV_AUDIO_ADPCM51
Audio flag: Any of the ADPCM'd 5.1 stream flags.
static int xmv_fetch_new_packet(AVFormatContext *s)
static int xmv_read_packet(AVFormatContext *s, AVPacket *pkt)
static void xmv_read_extradata(uint8_t *extradata, AVIOContext *pb)
static int xmv_read_header(AVFormatContext *s)