use ch_id as AVStream id and simplify

Originally committed as revision 7455 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
Baptiste Coudurier 2007-01-14 01:07:14 +00:00
parent ec54839ab1
commit 432cef7605
1 changed files with 10 additions and 17 deletions

View File

@ -69,7 +69,6 @@ typedef struct {
int swf_frame_number;
int video_frame_number;
int ms_per_frame;
int ch_id;
int tag;
uint8_t *audio_fifo;
@ -313,7 +312,6 @@ static int swf_write_header(AVFormatContext *s)
uint8_t buf1[256];
int i, width, height, rate, rate_base;
swf->ch_id = -1;
swf->audio_in_pos = 0;
swf->audio_out_pos = 0;
swf->audio_size = 0;
@ -775,7 +773,6 @@ static int swf_read_header(AVFormatContext *s, AVFormatParameters *ap)
a correct framerate */
swf->ms_per_frame = ( 1000 * 256 ) / frame_rate;
swf->samples_per_frame = 0;
swf->ch_id = -1;
firstTagOff = url_ftell(pb);
for(;;) {
@ -792,13 +789,13 @@ static int swf_read_header(AVFormatContext *s, AVFormatParameters *ap)
return AVERROR_IO;
}
if ( tag == TAG_VIDEOSTREAM && !vst) {
swf->ch_id = get_le16(pb);
int ch_id = get_le16(pb);
get_le16(pb);
get_le16(pb);
get_le16(pb);
get_byte(pb);
/* Check for FLV1 */
vst = av_new_stream(s, 0);
vst = av_new_stream(s, ch_id);
av_set_pts_info(vst, 24, 1, 1000); /* 24 bit pts in ms */
vst->codec->codec_type = CODEC_TYPE_VIDEO;
vst->codec->codec_id = codec_get_id(swf_codec_tags, get_byte(pb));
@ -856,22 +853,18 @@ static int swf_read_packet(AVFormatContext *s, AVPacket *pkt)
if (tag < 0)
return AVERROR_IO;
if (tag == TAG_VIDEOFRAME) {
int ch_id = get_le16(pb);
for( i=0; i<s->nb_streams; i++ ) {
st = s->streams[i];
if (st->id == 0) {
if ( get_le16(pb) == swf->ch_id ) {
frame = get_le16(pb);
av_get_packet(pb, pkt, len-4);
pkt->pts = frame * swf->ms_per_frame;
pkt->stream_index = st->index;
return pkt->size;
} else {
url_fskip(pb, len-2);
continue;
}
if (st->codec->codec_type == CODEC_TYPE_VIDEO && st->id == ch_id) {
frame = get_le16(pb);
av_get_packet(pb, pkt, len-4);
pkt->pts = frame * swf->ms_per_frame;
pkt->stream_index = st->index;
return pkt->size;
}
}
url_fskip(pb, len);
url_fskip(pb, len-2);
} else if (tag == TAG_STREAMBLOCK) {
for( i=0; i<s->nb_streams; i++ ) {
st = s->streams[i];