av_set_pts_info(st, 64, 1, st->codec->sample_rate);
break;
case CODEC_TYPE_VIDEO:
- av_set_pts_info(st, 64, ap->time_base.num, ap->time_base.den);
+ if(ap->time_base.num)
+ av_set_pts_info(st, 64, ap->time_base.num, ap->time_base.den);
+ else
+ av_set_pts_info(st, 64, 1, 25);
st->codec->width = ap->width;
st->codec->height = ap->height;
st->codec->pix_fmt = ap->pix_fmt;
static int raw_read_packet(AVFormatContext *s, AVPacket *pkt)
{
- int ret, size;
+ int ret, size, bps;
// AVStream *st = s->streams[0];
size= RAW_PACKET_SIZE;
/* note: we need to modify the packet size here to handle the last
packet */
pkt->size = ret;
+
+ bps= av_get_bits_per_sample(s->streams[0]->codec->codec_id);
+ assert(bps); // if false there IS a bug elsewhere (NOT in this function)
+ pkt->dts=
+ pkt->pts= pkt->pos*8 / (bps * s->streams[0]->codec->channels);
+
return ret;
}
return -1;
ret= av_get_packet(s->pb, pkt, packet_size);
+ pkt->pts=
+ pkt->dts= pkt->pos / packet_size;
pkt->stream_index = 0;
if (ret != packet_size) {