summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordiego <diego@b3059339-0415-0410-9bf9-f77b7e298cf2>2010-10-03 15:39:50 +0000
committerUoti Urpala <uau@glyph.nonexistent.invalid>2010-11-02 04:18:08 +0200
commit7acaf6db396d53d2a9c8dded03facd8991069699 (patch)
treeec08d0ae03f884ecbcbd3a112696dde340483f25
parent342c68283e46eb55b4433c11fe45ea0d166c656e (diff)
downloadmpv-7acaf6db396d53d2a9c8dded03facd8991069699.tar.bz2
mpv-7acaf6db396d53d2a9c8dded03facd8991069699.tar.xz
demux_pva: move functions, add "static"
Mark pva_get_payload() as static, it is not used outside of the file. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@32435 b3059339-0415-0410-9bf9-f77b7e298cf2 Move pva_get_payload() around to avoid a forward declaration. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@32436 b3059339-0415-0410-9bf9-f77b7e298cf2
-rw-r--r--libmpdemux/demux_pva.c178
1 files changed, 88 insertions, 90 deletions
diff --git a/libmpdemux/demux_pva.c b/libmpdemux/demux_pva.c
index 69cd5ff99d..218833178a 100644
--- a/libmpdemux/demux_pva.c
+++ b/libmpdemux/demux_pva.c
@@ -194,96 +194,7 @@ static demuxer_t * demux_open_pva (demuxer_t * demuxer)
return demuxer;
}
-int pva_get_payload(demuxer_t * d,pva_payload_t * payload);
-
-// 0 = EOF or no stream found
-// 1 = successfully read a packet
-static int demux_pva_fill_buffer (demuxer_t * demux, demux_stream_t *ds)
-{
- uint8_t done=0;
- demux_packet_t * dp;
- pva_priv_t * priv=demux->priv;
- pva_payload_t current_payload;
-
- while(!done)
- {
- if(!pva_get_payload(demux,&current_payload)) return 0;
- switch(current_payload.type)
- {
- case VIDEOSTREAM:
- if(demux->video->id==-1) demux->video->id=0;
- if(!current_payload.is_packet_start && priv->last_video_pts==-1)
- {
- /* We should only be here at the beginning of a stream, when we have
- * not yet encountered a valid Video PTS, or after a seek.
- * So, skip these starting packets in order not to deliver the
- * player a bogus PTS.
- */
- done=0;
- }
- else
- {
- /*
- * In every other condition, we are delivering the payload. Set this
- * so that the following code knows whether to skip it or read it.
- */
- done=1;
- }
- if(demux->video->id!=0) done=0;
- if(current_payload.is_packet_start)
- {
- priv->last_video_pts=current_payload.pts;
- //mp_msg(MSGT_DEMUXER,MSGL_DBG2,"demux_pva: Video PTS=%llu , delivered %f\n",current_payload.pts,priv->last_video_pts);
- }
- if(done)
- {
- dp=new_demux_packet(current_payload.size);
- dp->pts=priv->last_video_pts;
- stream_read(demux->stream,dp->buffer,current_payload.size);
- ds_add_packet(demux->video,dp);
- }
- else
- {
- //printf("Skipping %u video bytes\n",current_payload.size);
- stream_skip(demux->stream,current_payload.size);
- }
- break;
- case MAINAUDIOSTREAM:
- if(demux->audio->id==-1) demux->audio->id=0;
- if(!current_payload.is_packet_start && priv->last_audio_pts==-1)
- {
- /* Same as above for invalid video PTS, just for audio. */
- done=0;
- }
- else
- {
- done=1;
- }
- if(current_payload.is_packet_start)
- {
- priv->last_audio_pts=current_payload.pts;
- }
- if(demux->audio->id!=0) done=0;
- if(done)
- {
- dp=new_demux_packet(current_payload.size);
- dp->pts=priv->last_audio_pts;
- if(current_payload.offset != stream_tell(demux->stream))
- stream_seek(demux->stream,current_payload.offset);
- stream_read(demux->stream,dp->buffer,current_payload.size);
- ds_add_packet(demux->audio,dp);
- }
- else
- {
- stream_skip(demux->stream,current_payload.size);
- }
- break;
- }
- }
- return 1;
-}
-
-int pva_get_payload(demuxer_t * d,pva_payload_t * payload)
+static int pva_get_payload(demuxer_t *d, pva_payload_t *payload)
{
uint8_t flags,pes_head_len;
uint16_t pack_size;
@@ -476,6 +387,93 @@ int pva_get_payload(demuxer_t * d,pva_payload_t * payload)
return 1;
}
+// 0 = EOF or no stream found
+// 1 = successfully read a packet
+static int demux_pva_fill_buffer (demuxer_t * demux, demux_stream_t *ds)
+{
+ uint8_t done=0;
+ demux_packet_t * dp;
+ pva_priv_t * priv=demux->priv;
+ pva_payload_t current_payload;
+
+ while(!done)
+ {
+ if(!pva_get_payload(demux,&current_payload)) return 0;
+ switch(current_payload.type)
+ {
+ case VIDEOSTREAM:
+ if(demux->video->id==-1) demux->video->id=0;
+ if(!current_payload.is_packet_start && priv->last_video_pts==-1)
+ {
+ /* We should only be here at the beginning of a stream, when we have
+ * not yet encountered a valid Video PTS, or after a seek.
+ * So, skip these starting packets in order not to deliver the
+ * player a bogus PTS.
+ */
+ done=0;
+ }
+ else
+ {
+ /*
+ * In every other condition, we are delivering the payload. Set this
+ * so that the following code knows whether to skip it or read it.
+ */
+ done=1;
+ }
+ if(demux->video->id!=0) done=0;
+ if(current_payload.is_packet_start)
+ {
+ priv->last_video_pts=current_payload.pts;
+ //mp_msg(MSGT_DEMUXER,MSGL_DBG2,"demux_pva: Video PTS=%llu , delivered %f\n",current_payload.pts,priv->last_video_pts);
+ }
+ if(done)
+ {
+ dp=new_demux_packet(current_payload.size);
+ dp->pts=priv->last_video_pts;
+ stream_read(demux->stream,dp->buffer,current_payload.size);
+ ds_add_packet(demux->video,dp);
+ }
+ else
+ {
+ //printf("Skipping %u video bytes\n",current_payload.size);
+ stream_skip(demux->stream,current_payload.size);
+ }
+ break;
+ case MAINAUDIOSTREAM:
+ if(demux->audio->id==-1) demux->audio->id=0;
+ if(!current_payload.is_packet_start && priv->last_audio_pts==-1)
+ {
+ /* Same as above for invalid video PTS, just for audio. */
+ done=0;
+ }
+ else
+ {
+ done=1;
+ }
+ if(current_payload.is_packet_start)
+ {
+ priv->last_audio_pts=current_payload.pts;
+ }
+ if(demux->audio->id!=0) done=0;
+ if(done)
+ {
+ dp=new_demux_packet(current_payload.size);
+ dp->pts=priv->last_audio_pts;
+ if(current_payload.offset != stream_tell(demux->stream))
+ stream_seek(demux->stream,current_payload.offset);
+ stream_read(demux->stream,dp->buffer,current_payload.size);
+ ds_add_packet(demux->audio,dp);
+ }
+ else
+ {
+ stream_skip(demux->stream,current_payload.size);
+ }
+ break;
+ }
+ }
+ return 1;
+}
+
static void demux_seek_pva(demuxer_t * demuxer,float rel_seek_secs,float audio_delay,int flags)
{
int total_bitrate=0;