/*
- * RAW encoder and decoder
+ * RAW muxer and demuxer
* Copyright (c) 2001 Fabrice Bellard.
* Copyright (c) 2005 Alex Beregszaszi
*
int64_t pos;
st = s->streams[0];
- switch(st->codec->codec_id) {
- case CODEC_ID_PCM_S16LE:
- case CODEC_ID_PCM_S16BE:
- case CODEC_ID_PCM_U16LE:
- case CODEC_ID_PCM_U16BE:
- block_align = 2 * st->codec->channels;
- byte_rate = block_align * st->codec->sample_rate;
- break;
- case CODEC_ID_PCM_S8:
- case CODEC_ID_PCM_U8:
- case CODEC_ID_PCM_MULAW:
- case CODEC_ID_PCM_ALAW:
- block_align = st->codec->channels;
- byte_rate = block_align * st->codec->sample_rate;
- break;
- default:
- block_align = st->codec->block_align;
- byte_rate = st->codec->bit_rate / 8;
- break;
- }
+
+ block_align = st->codec->block_align ? st->codec->block_align :
+ (av_get_bits_per_sample(st->codec->codec_id) * st->codec->channels) >> 3;
+ byte_rate = st->codec->bit_rate ? st->codec->bit_rate >> 3 :
+ block_align * st->codec->sample_rate;
if (block_align <= 0 || byte_rate <= 0)
return -1;
return 0;
}
+#define VIDEO_OBJECT_START_CODE 0x00000100
+#define VIDEO_OBJECT_LAYER_START_CODE 0x00000120
+#define VISUAL_OBJECT_START_CODE 0x000001b5
+#define VOP_START_CODE 0x000001b6
+
+static int mpeg4video_probe(AVProbeData *probe_packet)
+{
+ uint32_t temp_buffer= -1;
+ int VO=0, VOL=0, VOP = 0, VISO = 0;
+ int i;
+
+ for(i=0; i<probe_packet->buf_size; i++){
+ temp_buffer = (temp_buffer<<8) + probe_packet->buf[i];
+ if ((temp_buffer & 0xffffff00) == 0x100) {
+ switch(temp_buffer){
+ case VOP_START_CODE: VOP++; break;
+ case VISUAL_OBJECT_START_CODE: VISO++; break;
+ }
+ switch(temp_buffer & 0xfffffff0){
+ case VIDEO_OBJECT_START_CODE: VO++; break;
+ case VIDEO_OBJECT_LAYER_START_CODE: VOL++; break;
+ }
+ }
+ }
+
+ if ( VOP >= VISO && VOP >= VOL && VO >= VOL && VOL > 0)
+ return AVPROBE_SCORE_MAX/2;
+ return 0;
+}
+
static int h263_probe(AVProbeData *p)
{
int code;
"m4v",
"raw MPEG4 video format",
0,
- NULL /*mpegvideo_probe*/,
+ mpeg4video_probe, /** probing for mpeg4 data */
video_read_header,
raw_read_partial_packet,
raw_read_close,