summaryrefslogtreecommitdiffstats
path: root/libmpdemux/demux_viv.c
diff options
context:
space:
mode:
Diffstat (limited to 'libmpdemux/demux_viv.c')
-rw-r--r--libmpdemux/demux_viv.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/libmpdemux/demux_viv.c b/libmpdemux/demux_viv.c
index 6fd8c2bf8f..891925d9c6 100644
--- a/libmpdemux/demux_viv.c
+++ b/libmpdemux/demux_viv.c
@@ -290,6 +290,9 @@ int vivo_check_file(demuxer_t* demuxer){
return 1;
}
+static audio_pos=0;
+static audio_rate=0;
+
// return value:
// 0 = EOF or no stream found
// 1 = successfully read a packet
@@ -348,6 +351,7 @@ int demux_vivo_fill_buffer(demuxer_t *demux){
else
len=40; /* 40kbps */
ds=demux->audio;
+ audio_pos+=len;
break;
case 0x40: // audio packet
if (prefix == 1)
@@ -355,6 +359,7 @@ int demux_vivo_fill_buffer(demuxer_t *demux){
else
len=24; /* 24kbps */
ds=demux->audio;
+ audio_pos+=len;
break;
default:
mp_msg(MSGT_DEMUX,MSGL_WARN,"VIVO - unknown ID found: %02X at pos %lu contact author!\n",
@@ -395,7 +400,7 @@ int demux_vivo_fill_buffer(demuxer_t *demux){
dp=new_demux_packet(len);
//memcpy(dp->buffer,data,len);
stream_read(demux->stream,dp->buffer,len);
-// dp->pts=time*0.001f;
+ dp->pts=audio_rate?((float)audio_pos/(float)audio_rate):0;
// dp->flags=keyframe;
// if(ds==demux->video) printf("ASF time: %8d dur: %5d \n",time,dur);
dp->pos=demux->filepos;
@@ -545,6 +550,8 @@ void demux_open_vivo(demuxer_t* demuxer){
mp_msg(MSGT_DEMUX,MSGL_ERR,"VIVO: " MSGTR_MissingVideoStreamBug);
return;
}
+
+ audio_pos=0;
h263_decode_picture_header(demuxer->video->buffer);
@@ -693,6 +700,7 @@ if (demuxer->audio->id >= -1){
}
if (vivo_param_abitrate != -1)
sh->wf->nAvgBytesPerSec = vivo_param_abitrate;
+ audio_rate=sh->wf->nAvgBytesPerSec;
if (!priv->audio_bytesperblock)
{