|
|
|
@ -36,17 +36,17 @@ |
|
|
|
|
|
|
|
|
|
typedef struct MTVDemuxContext { |
|
|
|
|
|
|
|
|
|
unsigned int file_size; ///< filesize, not always right
|
|
|
|
|
unsigned int segments; ///< number of 512 byte segments
|
|
|
|
|
unsigned int audio_identifier; ///< 'MP3' on all files I have seen
|
|
|
|
|
unsigned int audio_br; ///< bitrate of audio chanel (mp3)
|
|
|
|
|
unsigned int img_colorfmt; ///< frame colorfmt rgb 565/555
|
|
|
|
|
unsigned int img_bpp; ///< frame bits per pixel
|
|
|
|
|
unsigned int img_width; //
|
|
|
|
|
unsigned int img_height; //
|
|
|
|
|
unsigned int img_segment_size; ///< size of image segment
|
|
|
|
|
unsigned int video_fps; //
|
|
|
|
|
unsigned int full_segment_size; |
|
|
|
|
unsigned int file_size; ///< filesize, not always right
|
|
|
|
|
unsigned int segments; ///< number of 512 byte segments
|
|
|
|
|
unsigned int audio_identifier; ///< 'MP3' on all files I have seen
|
|
|
|
|
unsigned int audio_br; ///< bitrate of audio chanel (mp3)
|
|
|
|
|
unsigned int img_colorfmt; ///< frame colorfmt rgb 565/555
|
|
|
|
|
unsigned int img_bpp; ///< frame bits per pixel
|
|
|
|
|
unsigned int img_width; //
|
|
|
|
|
unsigned int img_height; //
|
|
|
|
|
unsigned int img_segment_size; ///< size of image segment
|
|
|
|
|
unsigned int video_fps; //
|
|
|
|
|
unsigned int full_segment_size; |
|
|
|
|
|
|
|
|
|
} MTVDemuxContext; |
|
|
|
|
|
|
|
|
@ -86,11 +86,11 @@ static int mtv_read_header(AVFormatContext *s, AVFormatParameters *ap) |
|
|
|
|
mtv->img_segment_size; |
|
|
|
|
mtv->video_fps = (mtv->audio_br / 4) / audio_subsegments; |
|
|
|
|
|
|
|
|
|
/* FIXME Add sanity check here */ |
|
|
|
|
// FIXME Add sanity check here
|
|
|
|
|
|
|
|
|
|
/* all systems go! init decoders */ |
|
|
|
|
// all systems go! init decoders
|
|
|
|
|
|
|
|
|
|
/* video - raw rgb565 */ |
|
|
|
|
// video - raw rgb565
|
|
|
|
|
|
|
|
|
|
st = av_new_stream(s, VIDEO_SID); |
|
|
|
|
if(!st) |
|
|
|
@ -105,7 +105,7 @@ static int mtv_read_header(AVFormatContext *s, AVFormatParameters *ap) |
|
|
|
|
st->codec->bits_per_coded_sample = mtv->img_bpp; |
|
|
|
|
st->codec->sample_rate = mtv->video_fps; |
|
|
|
|
|
|
|
|
|
/* audio - mp3 */ |
|
|
|
|
// audio - mp3
|
|
|
|
|
|
|
|
|
|
st = av_new_stream(s, AUDIO_SID); |
|
|
|
|
if(!st) |
|
|
|
@ -117,7 +117,7 @@ static int mtv_read_header(AVFormatContext *s, AVFormatParameters *ap) |
|
|
|
|
st->codec->bit_rate = mtv->audio_br; |
|
|
|
|
st->need_parsing = AVSTREAM_PARSE_FULL; |
|
|
|
|
|
|
|
|
|
/* Jump over header */ |
|
|
|
|
// Jump over header
|
|
|
|
|
|
|
|
|
|
if(url_fseek(pb, MTV_HEADER_SIZE, SEEK_SET) != MTV_HEADER_SIZE) |
|
|
|
|
return AVERROR(EIO); |
|
|
|
|