[Mplayerxp-cvslog] SF.net SVN: mplayerxp:[354] mplayerxp
Brought to you by:
olov
From: <nic...@us...> - 2012-11-13 10:42:27
|
Revision: 354 http://mplayerxp.svn.sourceforge.net/mplayerxp/?rev=354&view=rev Author: nickols_k Date: 2012-11-13 10:42:13 +0000 (Tue, 13 Nov 2012) Log Message: ----------- next step in QoS protection: add check_pin method Modified Paths: -------------- TODO mplayerxp/libmpdemux/demux_asf.c mplayerxp/libmpdemux/demux_audio.c mplayerxp/libmpdemux/demux_avi.c mplayerxp/libmpdemux/demux_bmp.c mplayerxp/libmpdemux/demux_demuxers.c mplayerxp/libmpdemux/demux_dv.c mplayerxp/libmpdemux/demux_film.c mplayerxp/libmpdemux/demux_fli.c mplayerxp/libmpdemux/demux_lavf.c mplayerxp/libmpdemux/demux_mkv.c mplayerxp/libmpdemux/demux_mov.c mplayerxp/libmpdemux/demux_mpg.c mplayerxp/libmpdemux/demux_mpxp64.c mplayerxp/libmpdemux/demux_nsv.c mplayerxp/libmpdemux/demux_nuv.c mplayerxp/libmpdemux/demux_ogg.c mplayerxp/libmpdemux/demux_pva.c mplayerxp/libmpdemux/demux_ra.c mplayerxp/libmpdemux/demux_rawaudio.c mplayerxp/libmpdemux/demux_rawvideo.c mplayerxp/libmpdemux/demux_real.c mplayerxp/libmpdemux/demux_roq.c mplayerxp/libmpdemux/demux_smjpeg.c mplayerxp/libmpdemux/demux_ts.c mplayerxp/libmpdemux/demux_ty.c mplayerxp/libmpdemux/demux_viv.c mplayerxp/libmpdemux/demux_vqf.c mplayerxp/libmpdemux/demux_y4m.c mplayerxp/libmpdemux/demuxer.c mplayerxp/libmpdemux/demuxer.h mplayerxp/libmpdemux/demuxer_r.h mplayerxp/libmpdemux/s_cdd.c mplayerxp/libmpdemux/s_dvdnav.c mplayerxp/libmpdemux/s_dvdread.c mplayerxp/libmpdemux/s_ffmpeg.c mplayerxp/libmpdemux/s_file.c mplayerxp/libmpdemux/s_ftp.c mplayerxp/libmpdemux/s_network.c mplayerxp/libmpdemux/s_oss.c mplayerxp/libmpdemux/s_rtsp.c mplayerxp/libmpdemux/s_tv.c mplayerxp/libmpdemux/s_udp.c mplayerxp/libmpdemux/s_vcdnav.c mplayerxp/libmpdemux/stream.c mplayerxp/libmpdemux/stream.h mplayerxp/mplayerxp.h mplayerxp/postproc/af.c mplayerxp/postproc/af.h mplayerxp/postproc/af_ao2.c mplayerxp/postproc/af_center.c mplayerxp/postproc/af_channels.c mplayerxp/postproc/af_comp.c mplayerxp/postproc/af_crystality.c mplayerxp/postproc/af_delay.c mplayerxp/postproc/af_dummy.c mplayerxp/postproc/af_dyn.c mplayerxp/postproc/af_echo3d.c mplayerxp/postproc/af_equalizer.c mplayerxp/postproc/af_export.c mplayerxp/postproc/af_extrastereo.c mplayerxp/postproc/af_ffenc.c mplayerxp/postproc/af_format.c mplayerxp/postproc/af_gate.c mplayerxp/postproc/af_hrtf.c mplayerxp/postproc/af_karaoke.c mplayerxp/postproc/af_lp.c mplayerxp/postproc/af_pan.c mplayerxp/postproc/af_raw.c mplayerxp/postproc/af_resample.c mplayerxp/postproc/af_scaletempo.c mplayerxp/postproc/af_sinesuppress.c mplayerxp/postproc/af_sub.c mplayerxp/postproc/af_surround.c mplayerxp/postproc/af_volnorm.c mplayerxp/postproc/af_volume.c mplayerxp/postproc/vf.c mplayerxp/postproc/vf.h mplayerxp/postproc/vf_1bpp.c mplayerxp/postproc/vf_2xsai.c mplayerxp/postproc/vf_aspect.c mplayerxp/postproc/vf_delogo.c mplayerxp/postproc/vf_denoise3d.c mplayerxp/postproc/vf_dint.c mplayerxp/postproc/vf_down3dright.c mplayerxp/postproc/vf_eq.c mplayerxp/postproc/vf_expand.c mplayerxp/postproc/vf_flip.c mplayerxp/postproc/vf_format.c mplayerxp/postproc/vf_framestep.c mplayerxp/postproc/vf_il.c mplayerxp/postproc/vf_menu.c mplayerxp/postproc/vf_mirror.c mplayerxp/postproc/vf_noise.c mplayerxp/postproc/vf_ow.c mplayerxp/postproc/vf_palette.c mplayerxp/postproc/vf_panscan.c mplayerxp/postproc/vf_perspective.c mplayerxp/postproc/vf_pp.c mplayerxp/postproc/vf_raw.c mplayerxp/postproc/vf_rectangle.c mplayerxp/postproc/vf_rgb2bgr.c mplayerxp/postproc/vf_rotate.c mplayerxp/postproc/vf_scale.c mplayerxp/postproc/vf_smartblur.c mplayerxp/postproc/vf_softpulldown.c mplayerxp/postproc/vf_swapuv.c mplayerxp/postproc/vf_test.c mplayerxp/postproc/vf_unsharp.c mplayerxp/postproc/vf_vo.c mplayerxp/postproc/vf_yuvcsp.c mplayerxp/postproc/vf_yuy2.c mplayerxp/postproc/vf_yvu9.c Modified: TODO =================================================================== --- TODO 2012-11-13 08:37:15 UTC (rev 353) +++ TODO 2012-11-13 10:42:13 UTC (rev 354) @@ -1,5 +1,6 @@ TODO for mplayerxp: +- test frame-dropping - replace suspect codecs.conf with built-in database [ mpcX-probe] - remove all #define with values (they maybe intercepted in other .h files) - add anti-viral protection for QOS("Query of Service") Modified: mplayerxp/libmpdemux/demux_asf.c =================================================================== --- mplayerxp/libmpdemux/demux_asf.c 2012-11-13 08:37:15 UTC (rev 353) +++ mplayerxp/libmpdemux/demux_asf.c 2012-11-13 10:42:13 UTC (rev 354) @@ -388,7 +388,8 @@ } } } -return demuxer; + check_pin("demuxer",demuxer->pin,DEMUX_PIN); + return demuxer; } // based on asf file-wtag doc by Eugene [http://divx.euro.ru] Modified: mplayerxp/libmpdemux/demux_audio.c =================================================================== --- mplayerxp/libmpdemux/demux_audio.c 2012-11-13 08:37:15 UTC (rev 353) +++ mplayerxp/libmpdemux/demux_audio.c 2012-11-13 10:42:13 UTC (rev 354) @@ -1362,6 +1362,7 @@ if(mp_conf.verbose && sh_audio->wf) print_wave_header(sh_audio->wf,sizeof(WAVEFORMATEX)); if(demuxer->movi_length==UINT_MAX && sh_audio->i_bps) demuxer->movi_length=(unsigned)(((float)demuxer->movi_end-(float)demuxer->movi_start)/(float)sh_audio->i_bps); + check_pin("demuxer",demuxer->pin,DEMUX_PIN); return demuxer; } Modified: mplayerxp/libmpdemux/demux_avi.c =================================================================== --- mplayerxp/libmpdemux/demux_avi.c 2012-11-13 08:37:15 UTC (rev 353) +++ mplayerxp/libmpdemux/demux_avi.c 2012-11-13 10:42:13 UTC (rev 354) @@ -1324,7 +1324,8 @@ } #endif } - return demuxer; + check_pin("demuxer",demuxer->pin,DEMUX_PIN); + return demuxer; } static void avi_seek(demuxer_t *demuxer,const seek_args_t* seeka){ Modified: mplayerxp/libmpdemux/demux_bmp.c =================================================================== --- mplayerxp/libmpdemux/demux_bmp.c 2012-11-13 08:37:15 UTC (rev 353) +++ mplayerxp/libmpdemux/demux_bmp.c 2012-11-13 10:42:13 UTC (rev 354) @@ -185,8 +185,8 @@ sh_video->fps = 2; // demuxer->priv = bmp_image; - - return demuxer; + check_pin("demuxer",demuxer->pin,DEMUX_PIN); + return demuxer; } static void bmp_close(demuxer_t* demuxer) Modified: mplayerxp/libmpdemux/demux_demuxers.c =================================================================== --- mplayerxp/libmpdemux/demux_demuxers.c 2012-11-13 08:37:15 UTC (rev 353) +++ mplayerxp/libmpdemux/demux_demuxers.c 2012-11-13 10:42:13 UTC (rev 354) @@ -35,7 +35,10 @@ ret->audio = ad->audio; ret->sub = sd->sub; - return ret; + check_pin("demuxer",ad->pin,DEMUX_PIN); + check_pin("demuxer",vd->pin,DEMUX_PIN); + check_pin("demuxer",sd->pin,DEMUX_PIN); + return ret; } static int demux_demuxers_fill_buffer(demuxer_t *demux,demux_stream_t *ds) { Modified: mplayerxp/libmpdemux/demux_dv.c =================================================================== --- mplayerxp/libmpdemux/demux_dv.c 2012-11-13 08:37:15 UTC (rev 353) +++ mplayerxp/libmpdemux/demux_dv.c 2012-11-13 10:42:13 UTC (rev 354) @@ -215,11 +215,12 @@ // sh_audio->context=(any_t*)dv_decoder; } - stream_reset(demuxer->stream); - stream_seek(demuxer->stream, 0); - dv_decoder_free(dv_decoder); //we keep this in the context of both stream headers - demuxer->priv=frames; - return demuxer; + stream_reset(demuxer->stream); + stream_seek(demuxer->stream, 0); + dv_decoder_free(dv_decoder); //we keep this in the context of both stream headers + demuxer->priv=frames; + check_pin("demuxer",demuxer->pin,DEMUX_PIN); + return demuxer; } static void dv_close(demuxer_t* demuxer) Modified: mplayerxp/libmpdemux/demux_film.c =================================================================== --- mplayerxp/libmpdemux/demux_film.c 2012-11-13 08:37:15 UTC (rev 353) +++ mplayerxp/libmpdemux/demux_film.c 2012-11-13 10:42:13 UTC (rev 354) @@ -420,9 +420,9 @@ } } - demuxer->priv = film_data; - - return demuxer; + demuxer->priv = film_data; + check_pin("demuxer",demuxer->pin,DEMUX_PIN); + return demuxer; } static void film_close(demuxer_t* demuxer) { Modified: mplayerxp/libmpdemux/demux_fli.c =================================================================== --- mplayerxp/libmpdemux/demux_fli.c 2012-11-13 08:37:15 UTC (rev 353) +++ mplayerxp/libmpdemux/demux_fli.c 2012-11-13 10:42:13 UTC (rev 354) @@ -169,12 +169,12 @@ } } - // save the actual number of frames indexed - frames->num_frames = frame_number; + // save the actual number of frames indexed + frames->num_frames = frame_number; - demuxer->priv = frames; - - return demuxer; + demuxer->priv = frames; + check_pin("demuxer",demuxer->pin,DEMUX_PIN); + return demuxer; } static void fli_close(demuxer_t* demuxer) { Modified: mplayerxp/libmpdemux/demux_lavf.c =================================================================== --- mplayerxp/libmpdemux/demux_lavf.c 2012-11-13 08:37:15 UTC (rev 353) +++ mplayerxp/libmpdemux/demux_lavf.c 2012-11-13 10:42:13 UTC (rev 354) @@ -401,7 +401,7 @@ } demuxer->video->id=-2; // audio-only } //else if (best_video > 0 && demuxer->video->id == -1) demuxer->video->id = best_video; - + check_pin("demuxer",demuxer->pin,DEMUX_PIN); return demuxer; } Modified: mplayerxp/libmpdemux/demux_mkv.c =================================================================== --- mplayerxp/libmpdemux/demux_mkv.c 2012-11-13 08:37:15 UTC (rev 353) +++ mplayerxp/libmpdemux/demux_mkv.c 2012-11-13 10:42:13 UTC (rev 354) @@ -3064,8 +3064,8 @@ mkv_seek (demuxer, &seeka); } } - - return demuxer; + check_pin("demuxer",demuxer->pin,DEMUX_PIN); + return demuxer; } static void mkv_close (demuxer_t *demuxer) Modified: mplayerxp/libmpdemux/demux_mov.c =================================================================== --- mplayerxp/libmpdemux/demux_mov.c 2012-11-13 08:37:15 UTC (rev 353) +++ mplayerxp/libmpdemux/demux_mov.c 2012-11-13 10:42:13 UTC (rev 354) @@ -1885,6 +1885,7 @@ } } #endif + check_pin("demuxer",demuxer->pin,DEMUX_PIN); return demuxer; } Modified: mplayerxp/libmpdemux/demux_mpg.c =================================================================== --- mplayerxp/libmpdemux/demux_mpg.c 2012-11-13 08:37:15 UTC (rev 353) +++ mplayerxp/libmpdemux/demux_mpg.c 2012-11-13 10:42:13 UTC (rev 354) @@ -800,7 +800,8 @@ sh_audio->ds=demuxer->audio; } } - return demuxer; + check_pin("demuxer",demuxer->pin,DEMUX_PIN); + return demuxer; } static void mpgps_close(demuxer_t*demuxer) Modified: mplayerxp/libmpdemux/demux_mpxp64.c =================================================================== --- mplayerxp/libmpdemux/demux_mpxp64.c 2012-11-13 08:37:15 UTC (rev 353) +++ mplayerxp/libmpdemux/demux_mpxp64.c 2012-11-13 10:42:13 UTC (rev 354) @@ -539,6 +539,7 @@ demuxer->movi_start=stream_tell(s); demuxer->movi_end=demuxer->movi_start+hsize; MSG_V("Found AVDATA64 at offset %016llX bytes\n",t); + check_pin("demuxer",demuxer->pin,DEMUX_PIN); return demuxer; } Modified: mplayerxp/libmpdemux/demux_nsv.c =================================================================== --- mplayerxp/libmpdemux/demux_nsv.c 2012-11-13 08:37:15 UTC (rev 353) +++ mplayerxp/libmpdemux/demux_nsv.c 2012-11-13 10:42:13 UTC (rev 354) @@ -307,7 +307,7 @@ // seek to start of NSV header stream_seek(demuxer->stream,stream_tell(demuxer->stream)-17); - + check_pin("demuxer",demuxer->pin,DEMUX_PIN); return demuxer; } Modified: mplayerxp/libmpdemux/demux_nuv.c =================================================================== --- mplayerxp/libmpdemux/demux_nuv.c 2012-11-13 08:37:15 UTC (rev 353) +++ mplayerxp/libmpdemux/demux_nuv.c 2012-11-13 10:42:13 UTC (rev 354) @@ -283,8 +283,8 @@ priv->index_list->offset = stream_tell ( demuxer->stream ); priv->index_list->next = NULL; priv->current_position = priv->index_list; - - return demuxer; + check_pin("demuxer",demuxer->pin,DEMUX_PIN); + return demuxer; } static MPXP_Rc nuv_probe ( demuxer_t* demuxer ) Modified: mplayerxp/libmpdemux/demux_ogg.c =================================================================== --- mplayerxp/libmpdemux/demux_ogg.c 2012-11-13 08:37:15 UTC (rev 353) +++ mplayerxp/libmpdemux/demux_ogg.c 2012-11-13 10:42:13 UTC (rev 354) @@ -1063,10 +1063,10 @@ demuxer->flags |= DEMUXF_SEEKABLE; demux_ogg_scan_stream(demuxer); } - MSG_V("Ogg demuxer : found %d audio stream%s, %d video stream%s and %d text stream%s\n",n_audio,n_audio>1?"s":"",n_video,n_video>1?"s":"",ogg_d->n_text,ogg_d->n_text>1?"s":""); + MSG_V("Ogg demuxer : found %d audio stream%s, %d video stream%s and %d text stream%s\n",n_audio,n_audio>1?"s":"",n_video,n_video>1?"s":"",ogg_d->n_text,ogg_d->n_text>1?"s":""); + check_pin("demuxer",demuxer->pin,DEMUX_PIN); + return demuxer; - return demuxer; - err_out: ogg_close(demuxer); return 0; Modified: mplayerxp/libmpdemux/demux_pva.c =================================================================== --- mplayerxp/libmpdemux/demux_pva.c 2012-11-13 08:37:15 UTC (rev 353) +++ mplayerxp/libmpdemux/demux_pva.c 2012-11-13 10:42:13 UTC (rev 354) @@ -125,61 +125,56 @@ static demuxer_t* pva_open (demuxer_t * demuxer) { - sh_video_t *sh_video = new_sh_video(demuxer,0); - sh_audio_t *sh_audio = new_sh_audio(demuxer,0); + sh_video_t *sh_video = new_sh_video(demuxer,0); + sh_audio_t *sh_audio = new_sh_audio(demuxer,0); + pva_priv_t * priv; - pva_priv_t * priv; + stream_reset(demuxer->stream); + stream_seek(demuxer->stream,0); - stream_reset(demuxer->stream); - stream_seek(demuxer->stream,0); + priv=mp_mallocz(sizeof(pva_priv_t)); + demuxer->flags|=DEMUXF_SEEKABLE; - priv=mp_mallocz(sizeof(pva_priv_t)); - demuxer->flags|=DEMUXF_SEEKABLE; + demuxer->priv=priv; - demuxer->priv=priv; + if(!pva_sync(demuxer)) { + MSG_ERR("Not a PVA file.\n"); + return NULL; + } - if(!pva_sync(demuxer)) - { - MSG_ERR("Not a PVA file.\n"); - return NULL; - } + //printf("priv->just_synced %s after initial sync!\n",priv->just_synced?"set":"UNSET"); - //printf("priv->just_synced %s after initial sync!\n",priv->just_synced?"set":"UNSET"); + demuxer->video->sh=sh_video; - demuxer->video->sh=sh_video; + //printf("demuxer->stream->end_pos= %d\n",demuxer->stream->end_pos); + MSG_V("Opened PVA demuxer...\n"); + /* + * Audio and Video codecs: + * the PVA spec only allows MPEG2 video and MPEG layer II audio. No need to check the formats then. + * Moreover, there would be no way to do that since the PVA stream format has no fields to describe + * the used codecs. + */ - //printf("demuxer->stream->end_pos= %d\n",demuxer->stream->end_pos); + sh_video->fourcc=0x10000002; + sh_video->ds=demuxer->video; + /* + printf("demuxer->video->id==%d\n",demuxer->video->id); + printf("demuxer->audio->id==%d\n",demuxer->audio->id); + */ - MSG_V("Opened PVA demuxer...\n"); + demuxer->audio->sh=sh_audio; + sh_audio->wtag=0x50; + sh_audio->ds=demuxer->audio; - /* - * Audio and Video codecs: - * the PVA spec only allows MPEG2 video and MPEG layer II audio. No need to check the formats then. - * Moreover, there would be no way to do that since the PVA stream format has no fields to describe - * the used codecs. - */ + demuxer->movi_start=0; + demuxer->movi_end=demuxer->stream->end_pos; - sh_video->fourcc=0x10000002; - sh_video->ds=demuxer->video; - - /* - printf("demuxer->video->id==%d\n",demuxer->video->id); - printf("demuxer->audio->id==%d\n",demuxer->audio->id); - */ - - demuxer->audio->sh=sh_audio; - sh_audio->wtag=0x50; - sh_audio->ds=demuxer->audio; - - demuxer->movi_start=0; - demuxer->movi_end=demuxer->stream->end_pos; - - priv->last_video_pts=-1; - priv->last_audio_pts=-1; - - return demuxer; + priv->last_video_pts=-1; + priv->last_audio_pts=-1; + check_pin("demuxer",demuxer->pin,DEMUX_PIN); + return demuxer; } static int pva_get_payload(demuxer_t * d,pva_payload_t * payload); Modified: mplayerxp/libmpdemux/demux_ra.c =================================================================== --- mplayerxp/libmpdemux/demux_ra.c 2012-11-13 08:37:15 UTC (rev 353) +++ mplayerxp/libmpdemux/demux_ra.c 2012-11-13 10:42:13 UTC (rev 354) @@ -268,7 +268,7 @@ if(!ds_fill_buffer(demuxer->audio)) MSG_WARN("[RealAudio] No data.\n"); - + check_pin("demuxer",demuxer->pin,DEMUX_PIN); return demuxer; } Modified: mplayerxp/libmpdemux/demux_rawaudio.c =================================================================== --- mplayerxp/libmpdemux/demux_rawaudio.c 2012-11-13 08:37:15 UTC (rev 353) +++ mplayerxp/libmpdemux/demux_rawaudio.c 2012-11-13 10:42:13 UTC (rev 354) @@ -3,6 +3,7 @@ #include <stdlib.h> #include <stdio.h> +#include "mplayerxp.h" #include "stream.h" #include "demuxer.h" #include "stheader.h" @@ -70,8 +71,8 @@ demuxer->audio->id = 0; sh_audio->ds = demuxer->audio; if(!(demuxer->stream->type & STREAMTYPE_SEEKABLE)) demuxer->flags &= ~DEMUXF_SEEKABLE; - - return demuxer; + check_pin("demuxer",demuxer->pin,DEMUX_PIN); + return demuxer; } static int rawaudio_demux(demuxer_t* demuxer, demux_stream_t *ds) { Modified: mplayerxp/libmpdemux/demux_rawvideo.c =================================================================== --- mplayerxp/libmpdemux/demux_rawvideo.c 2012-11-13 08:37:15 UTC (rev 353) +++ mplayerxp/libmpdemux/demux_rawvideo.c 2012-11-13 10:42:13 UTC (rev 354) @@ -114,8 +114,8 @@ demuxer->video->sh = sh_video; sh_video->ds = demuxer->video; - - return demuxer; + check_pin("demuxer",demuxer->pin,DEMUX_PIN); + return demuxer; } static int rawvideo_demux(demuxer_t* demuxer, demux_stream_t *ds) { Modified: mplayerxp/libmpdemux/demux_real.c =================================================================== --- mplayerxp/libmpdemux/demux_real.c 2012-11-13 08:37:15 UTC (rev 353) +++ mplayerxp/libmpdemux/demux_real.c 2012-11-13 10:42:13 UTC (rev 354) @@ -1477,6 +1477,7 @@ &sh->fourcc,((unsigned int*)(sh->bih+1))[1],((unsigned int*)(sh->bih+1))[0], sh->src_w,sh->src_h,sh->aspect,sh->fps); } + check_pin("demuxer",demuxer->pin,DEMUX_PIN); return demuxer; } Modified: mplayerxp/libmpdemux/demux_roq.c =================================================================== --- mplayerxp/libmpdemux/demux_roq.c 2012-11-13 08:37:15 UTC (rev 353) +++ mplayerxp/libmpdemux/demux_roq.c 2012-11-13 10:42:13 UTC (rev 354) @@ -237,13 +237,11 @@ if (sh_audio) sh_audio->wf->nBlockAlign = largest_audio_chunk * 2; - roq_data->current_chunk = 0; - - demuxer->priv = roq_data; - - stream_reset(demuxer->stream); - - return demuxer; + roq_data->current_chunk = 0; + demuxer->priv = roq_data; + stream_reset(demuxer->stream); + check_pin("demuxer",demuxer->pin,DEMUX_PIN); + return demuxer; } static void roq_close(demuxer_t* demuxer) { Modified: mplayerxp/libmpdemux/demux_smjpeg.c =================================================================== --- mplayerxp/libmpdemux/demux_smjpeg.c 2012-11-13 08:37:15 UTC (rev 353) +++ mplayerxp/libmpdemux/demux_smjpeg.c 2012-11-13 10:42:13 UTC (rev 354) @@ -162,7 +162,7 @@ } demuxer->flags &= ~DEMUXF_SEEKABLE; - + check_pin("demuxer",demuxer->pin,DEMUX_PIN); return demuxer; } Modified: mplayerxp/libmpdemux/demux_ts.c =================================================================== --- mplayerxp/libmpdemux/demux_ts.c 2012-11-13 08:37:15 UTC (rev 353) +++ mplayerxp/libmpdemux/demux_ts.c 2012-11-13 10:42:13 UTC (rev 354) @@ -1033,8 +1033,9 @@ for(i = 0; i < priv->pmt_cnt; i++) priv->pmt[i].section.buffer_len = 0; - demuxer->filepos = stream_tell(demuxer->stream); - return demuxer; + demuxer->filepos = stream_tell(demuxer->stream); + check_pin("demuxer",demuxer->pin,DEMUX_PIN); + return demuxer; } static void ts_close(demuxer_t * demuxer) Modified: mplayerxp/libmpdemux/demux_ty.c =================================================================== --- mplayerxp/libmpdemux/demux_ty.c 2012-11-13 08:37:15 UTC (rev 353) +++ mplayerxp/libmpdemux/demux_ty.c 2012-11-13 10:42:13 UTC (rev 354) @@ -855,7 +855,8 @@ sh_audio_t *sh_audio=NULL; sh_video_t *sh_video=NULL; - sh_video=demuxer->video->sh;sh_video->ds=demuxer->video; + sh_video=demuxer->video->sh; + sh_video->ds=demuxer->video; if(demuxer->audio->id!=-2) { if(!ds_fill_buffer(demuxer->audio)){ @@ -865,7 +866,7 @@ sh_audio=demuxer->audio->sh;sh_audio->ds=demuxer->audio; } } - + check_pin("demuxer",demuxer->pin,DEMUX_PIN); return demuxer; } Modified: mplayerxp/libmpdemux/demux_viv.c =================================================================== --- mplayerxp/libmpdemux/demux_viv.c 2012-11-13 08:37:15 UTC (rev 353) +++ mplayerxp/libmpdemux/demux_viv.c 2012-11-13 10:42:13 UTC (rev 354) @@ -725,6 +725,7 @@ ; } } + check_pin("demuxer",demuxer->pin,DEMUX_PIN); return demuxer; } Modified: mplayerxp/libmpdemux/demux_vqf.c =================================================================== --- mplayerxp/libmpdemux/demux_vqf.c 2012-11-13 08:37:15 UTC (rev 353) +++ mplayerxp/libmpdemux/demux_vqf.c 2012-11-13 10:42:13 UTC (rev 354) @@ -181,7 +181,8 @@ demuxer->audio->sh = sh_audio; sh_audio->ds = demuxer->audio; stream_seek(s,demuxer->movi_start); - return demuxer; + check_pin("demuxer",demuxer->pin,DEMUX_PIN); + return demuxer; } static int vqf_demux(demuxer_t* demuxer, demux_stream_t *ds) { Modified: mplayerxp/libmpdemux/demux_y4m.c =================================================================== --- mplayerxp/libmpdemux/demux_y4m.c 2012-11-13 08:37:15 UTC (rev 353) +++ mplayerxp/libmpdemux/demux_y4m.c 2012-11-13 10:42:13 UTC (rev 354) @@ -222,6 +222,7 @@ MSG_V( "YUV4MPEG2 Video stream %d size: display: %dx%d, codec: %ux%u\n", demuxer->video->id, sh->src_w, sh->src_h, sh->bih->biWidth, sh->bih->biHeight); + check_pin("demuxer",demuxer->pin,DEMUX_PIN); return demuxer; } Modified: mplayerxp/libmpdemux/demuxer.c =================================================================== --- mplayerxp/libmpdemux/demuxer.c 2012-11-13 08:37:15 UTC (rev 353) +++ mplayerxp/libmpdemux/demuxer.c 2012-11-13 10:42:13 UTC (rev 354) @@ -116,6 +116,7 @@ demux_stream_t* new_demuxer_stream(struct demuxer_s *demuxer,int id){ demux_stream_t* ds=mp_malloc(sizeof(demux_stream_t)); RND_RENAME0(rnd_fill)(ds->antiviral_hole,sizeof(ds->antiviral_hole)); + ds->pin=DS_PIN; ds->buffer_pos=ds->buffer_size=0; ds->buffer=NULL; ds->pts=0; @@ -143,6 +144,7 @@ demuxer_t* new_demuxer(stream_t *stream,int type,int a_id,int v_id,int s_id){ demuxer_t *d=mp_mallocz(sizeof(demuxer_t)); RND_RENAME0(rnd_fill)(d->antiviral_hole,sizeof(d->antiviral_hole)); + d->pin=DEMUX_PIN; d->stream=stream; d->movi_start=stream->start_pos; d->movi_end=stream->end_pos; @@ -167,6 +169,7 @@ id, MAX_A_STREAMS); return NULL; } + check_pin("demuxer",demuxer->pin,DEMUX_PIN); return demuxer->a_streams[id]; } @@ -189,6 +192,7 @@ MSG_V("ID_AUDIO_ID=%d\n", aid); } ((sh_audio_t *)demuxer->a_streams[id])->aid = aid; + check_pin("demuxer",demuxer->pin,DEMUX_PIN); return demuxer->a_streams[id]; } @@ -205,6 +209,7 @@ id, MAX_V_STREAMS); return NULL; } + check_pin("demuxer",demuxer->pin,DEMUX_PIN); return demuxer->v_streams[id]; } @@ -222,6 +227,7 @@ MSG_V("ID_VIDEO_ID=%d\n", vid); } ((sh_video_t *)demuxer->v_streams[id])->vid = vid; + check_pin("demuxer",demuxer->pin,DEMUX_PIN); return demuxer->v_streams[id]; } @@ -319,6 +325,7 @@ else MSG_DBG3("ds_fill_buffer(unknown %p) called\n",ds); } + check_pin("demuxer",ds->pin,DS_PIN); while(1){ if(ds->packs){ demux_packet_t *p=ds->first; @@ -666,6 +673,7 @@ if(sh_audio) sh_audio->timer=0; if(demuxer->driver->seek) demuxer->driver->seek(demuxer,seeka); else MSG_WARN("Demuxer seek error\n"); + check_pin("demuxer",demuxer->pin,DEMUX_PIN); return 1; } @@ -697,6 +705,7 @@ return 0; } opt--; + check_pin("demuxer",demuxer->pin,DEMUX_PIN); if(((demuxer_info_t *)demuxer->info)->id[opt]) { MSG_V( "Demuxer info '%s' already present as '%s'!\n",info_names[opt],((demuxer_info_t *)demuxer->info)->id[opt]); @@ -757,6 +766,7 @@ if(demuxer->driver) return demuxer->driver->control(demuxer,cmd,arg); + check_pin("demuxer",demuxer->pin,DEMUX_PIN); return MPXP_Unknown; } @@ -765,6 +775,7 @@ if(id>MAX_A_STREAMS) id=0; if (demux_control(demuxer, DEMUX_CMD_SWITCH_AUDIO, &id) == MPXP_Unknown) id = demuxer->audio->id; + check_pin("demuxer",demuxer->pin,DEMUX_PIN); return id; } @@ -773,6 +784,7 @@ if(id>MAX_V_STREAMS) id=0; if (demux_control(demuxer, DEMUX_CMD_SWITCH_VIDEO, &id) == MPXP_Unknown) id = demuxer->audio->id; + check_pin("demuxer",demuxer->pin,DEMUX_PIN); return id; } @@ -781,6 +793,7 @@ if(id>MAX_S_STREAMS) id=0; if (demux_control(demuxer, DEMUX_CMD_SWITCH_SUBS, &id) == MPXP_Unknown) id = demuxer->audio->id; + check_pin("demuxer",demuxer->pin,DEMUX_PIN); return id; } Modified: mplayerxp/libmpdemux/demuxer.h =================================================================== --- mplayerxp/libmpdemux/demuxer.h 2012-11-13 08:37:15 UTC (rev 353) +++ mplayerxp/libmpdemux/demuxer.h 2012-11-13 10:42:13 UTC (rev 354) @@ -62,9 +62,14 @@ } demux_packet_t; /** Describes interface to stream associated with this demuxer */ +enum { + DS_PIN=RND_NUMBER1+RND_CHAR1 +}; + typedef struct demux_stream_s { int id; /**< stream ID (for multiple audio/video streams) */ char antiviral_hole[RND_CHAR2]; + unsigned pin; /**< personal identification number */ int buffer_pos; /**< current buffer position */ int buffer_size; /**< current buffer size */ unsigned char* buffer; /**< current buffer */ @@ -91,7 +96,7 @@ float prev_pts; /**< PTS of previous packet (DVD's PTS correction) */ float pts_corr; /**< PTS correction (DVD's PTS correction) */ int pts_flags; /**< PTS flags like trigger for correction applying (DVD's PTS correction) */ -} demux_stream_t; +} demux_stream_t __attribute__ ((packed)); enum { MAX_A_STREAMS =256, @@ -102,8 +107,13 @@ DEMUXF_SEEKABLE =0x00000001UL }; /** Describes demuxer (demultiplexer) of movie */ +enum { + DEMUX_PIN=RND_NUMBER2+RND_CHAR2 +}; + typedef struct demuxer_s { char antiviral_hole[RND_CHAR3]; + unsigned pin; /**< personal identification number */ stream_t* stream; /**< stream for movie reading */ demux_stream_t* audio; /**< audio buffer/demuxer */ demux_stream_t* video; /**< video buffer/demuxer */ @@ -122,7 +132,7 @@ any_t* priv; /**< private data of demuxer's driver.*/ any_t* info; /**< human-readable info from stream/movie (like movie name,author,duration)*/ struct demuxer_driver_s* driver; /**< driver associated with this demuxer */ -} demuxer_t; +} demuxer_t __attribute__ ((packed)); enum { DEMUX_SEEK_CUR =0x00, Modified: mplayerxp/libmpdemux/demuxer_r.h =================================================================== --- mplayerxp/libmpdemux/demuxer_r.h 2012-11-13 08:37:15 UTC (rev 353) +++ mplayerxp/libmpdemux/demuxer_r.h 2012-11-13 10:42:13 UTC (rev 354) @@ -12,8 +12,8 @@ #endif typedef enum enc_frame_type { - AudioFrame=1, - VideoFrame + AudioFrame=RND_NUMBER0, + VideoFrame=RND_NUMBER1 }enc_frame_type_e; typedef struct enc_frame_s { Modified: mplayerxp/libmpdemux/s_cdd.c =================================================================== --- mplayerxp/libmpdemux/s_cdd.c 2012-11-13 08:37:15 UTC (rev 353) +++ mplayerxp/libmpdemux/s_cdd.c 2012-11-13 10:42:13 UTC (rev 354) @@ -32,6 +32,7 @@ param=mrl_parse_line(filename,NULL,NULL,&device,NULL); retval = open_cdda(stream,device ? device : DEFAULT_CDROM_DEVICE,param); if(device) mp_free(device); + check_pin("stream",stream->pin,STREAM_PIN); return retval; } @@ -50,6 +51,7 @@ param=mrl_parse_line(filename,NULL,NULL,&device,NULL); retval = open_cddb(stream,device ? device : DEFAULT_CDROM_DEVICE,param); if(device) mp_free(device); + check_pin("stream",stream->pin,STREAM_PIN); return retval; } Modified: mplayerxp/libmpdemux/s_dvdnav.c =================================================================== --- mplayerxp/libmpdemux/s_dvdnav.c 2012-11-13 08:37:15 UTC (rev 353) +++ mplayerxp/libmpdemux/s_dvdnav.c 2012-11-13 10:42:13 UTC (rev 354) @@ -1,7 +1,7 @@ /* s_dvdnav - DVDNAV's stream interface */ -#include "../mp_config.h" +#include "mp_config.h" #ifdef USE_DVDNAV #include <stdlib.h> #include <string.h> @@ -107,6 +107,7 @@ if (dvdnav_get_title_string(dvdnav_priv->dvdnav,&title_str)==DVDNAV_STATUS_OK) { MSG_INFO("Title: '%s'\n",title_str); } + check_pin("stream",stream->pin,STREAM_PIN); return dvdnav_priv; } @@ -248,6 +249,7 @@ if( dvdnav_is_domain_vmgm(((dvdnav_priv_t *)stream->priv)->dvdnav) || dvdnav_is_domain_vtsm(((dvdnav_priv_t *)stream->priv)->dvdnav)) stream->type = STREAMTYPE_MENU|STREAMTYPE_SEEKABLE; + check_pin("stream",stream->pin,STREAM_PIN); return MPXP_Ok; } Modified: mplayerxp/libmpdemux/s_dvdread.c =================================================================== --- mplayerxp/libmpdemux/s_dvdread.c 2012-11-13 08:37:15 UTC (rev 353) +++ mplayerxp/libmpdemux/s_dvdread.c 2012-11-13 10:42:13 UTC (rev 354) @@ -736,6 +736,7 @@ stream->type = STREAMTYPE_SEEKABLE|STREAMTYPE_PROGRAM; stream->sector_size=2048; d->spos=0; + check_pin("stream",stream->pin,STREAM_PIN); return MPXP_Ok; } Modified: mplayerxp/libmpdemux/s_ffmpeg.c =================================================================== --- mplayerxp/libmpdemux/s_ffmpeg.c 2012-11-13 08:37:15 UTC (rev 353) +++ mplayerxp/libmpdemux/s_ffmpeg.c 2012-11-13 10:42:13 UTC (rev 354) @@ -82,6 +82,7 @@ stream->type = STREAMTYPE_SEEKABLE; stream->priv = p; if (ctx->is_streamed) stream->type = STREAMTYPE_STREAM; + check_pin("stream",stream->pin,STREAM_PIN); return MPXP_Ok; } Modified: mplayerxp/libmpdemux/s_file.c =================================================================== --- mplayerxp/libmpdemux/s_file.c 2012-11-13 08:37:15 UTC (rev 353) +++ mplayerxp/libmpdemux/s_file.c 2012-11-13 10:42:13 UTC (rev 354) @@ -40,6 +40,7 @@ /* Note: Please locate sector_size changinf after all read/write operations of open() function */ stream->sector_size=mp_conf.s_cache_size?mp_conf.s_cache_size*1024/10:STREAM_BUFFER_SIZE; ((file_priv_t*)stream->priv)->spos = 0; + check_pin("stream",stream->pin,STREAM_PIN); return MPXP_Ok; } Modified: mplayerxp/libmpdemux/s_ftp.c =================================================================== --- mplayerxp/libmpdemux/s_ftp.c 2012-11-13 08:37:15 UTC (rev 353) +++ mplayerxp/libmpdemux/s_ftp.c 2012-11-13 10:42:13 UTC (rev 354) @@ -462,15 +462,16 @@ else { stream->type = STREAMTYPE_STREAM; } - p->spos=0; - // The data connection is really opened only at the first - // read/seek. This must be done when the cache is used - // because the connection would stay open in the main process, - // preventing correct abort with many servers. - stream->fd = -1; + p->spos=0; + // The data connection is really opened only at the first + // read/seek. This must be done when the cache is used + // because the connection would stay open in the main process, + // preventing correct abort with many servers. + stream->fd = -1; - url_free(url); - return MPXP_Ok; + url_free(url); + check_pin("stream",stream->pin,STREAM_PIN); + return MPXP_Ok; } static MPXP_Rc __FASTCALL__ ftp_ctrl(stream_t *s,unsigned cmd,any_t*args) { Modified: mplayerxp/libmpdemux/s_network.c =================================================================== --- mplayerxp/libmpdemux/s_network.c 2012-11-13 08:37:15 UTC (rev 353) +++ mplayerxp/libmpdemux/s_network.c 2012-11-13 10:42:13 UTC (rev 354) @@ -45,6 +45,7 @@ stream->sector_size=STREAM_BUFFER_SIZE; return MPXP_Ok; } + check_pin("stream",stream->pin,STREAM_PIN); return MPXP_False; } Modified: mplayerxp/libmpdemux/s_oss.c =================================================================== --- mplayerxp/libmpdemux/s_oss.c 2012-11-13 08:37:15 UTC (rev 353) +++ mplayerxp/libmpdemux/s_oss.c 2012-11-13 10:42:13 UTC (rev 354) @@ -125,6 +125,7 @@ stream->sector_size *= 4096*oss_priv->nchannels*(oss_priv->sampleformat&MPAF_BPS_MASK)/stream->sector_size; } MSG_DBG2("[o_oss] Correct blocksize as %u\n",stream->sector_size); + check_pin("stream",stream->pin,STREAM_PIN); return MPXP_Ok; } Modified: mplayerxp/libmpdemux/s_rtsp.c =================================================================== --- mplayerxp/libmpdemux/s_rtsp.c 2012-11-13 08:37:15 UTC (rev 353) +++ mplayerxp/libmpdemux/s_rtsp.c 2012-11-13 10:42:13 UTC (rev 354) @@ -159,6 +159,7 @@ fixup_network_stream_cache (stream); stream->type = STREAMTYPE_STREAM; + check_pin("stream",stream->pin,STREAM_PIN); return MPXP_Ok; } Modified: mplayerxp/libmpdemux/s_tv.c =================================================================== --- mplayerxp/libmpdemux/s_tv.c 2012-11-13 08:37:15 UTC (rev 353) +++ mplayerxp/libmpdemux/s_tv.c 2012-11-13 10:42:13 UTC (rev 354) @@ -571,6 +571,7 @@ goto tv_err; stream->type = STREAMTYPE_STREAM; + check_pin("stream",stream->pin,STREAM_PIN); return MPXP_Ok; /* something went wrong - uninit */ Modified: mplayerxp/libmpdemux/s_udp.c =================================================================== --- mplayerxp/libmpdemux/s_udp.c 2012-11-13 08:37:15 UTC (rev 353) +++ mplayerxp/libmpdemux/s_udp.c 2012-11-13 10:42:13 UTC (rev 354) @@ -106,6 +106,7 @@ } stream->type = STREAMTYPE_STREAM; fixup_network_stream_cache (stream); + check_pin("stream",stream->pin,STREAM_PIN); return MPXP_Ok; } Modified: mplayerxp/libmpdemux/s_vcdnav.c =================================================================== --- mplayerxp/libmpdemux/s_vcdnav.c 2012-11-13 08:37:15 UTC (rev 353) +++ mplayerxp/libmpdemux/s_vcdnav.c 2012-11-13 10:42:13 UTC (rev 354) @@ -138,6 +138,7 @@ stream->start_pos=priv->start*sizeof(vcdsector_t); stream->end_pos=(priv->start+priv->total)*sizeof(vcdsector_t); MSG_DBG2("vcdnav_open start=%i end=%i ssize=%i\n",priv->lsn,priv->total,stream->sector_size); + check_pin("stream",stream->pin,STREAM_PIN); return MPXP_Ok; } Modified: mplayerxp/libmpdemux/stream.c =================================================================== --- mplayerxp/libmpdemux/stream.c 2012-11-13 08:37:15 UTC (rev 353) +++ mplayerxp/libmpdemux/stream.c 2012-11-13 10:42:13 UTC (rev 354) @@ -212,16 +212,17 @@ } void __FASTCALL__ nc_stream_reset(stream_t *s){ - if(s->eof){ - s->pos=0; - s->eof=0; - } + if(s->eof){ + s->pos=0; + s->eof=0; + } } stream_t* __FASTCALL__ new_memory_stream(const unsigned char* data,int len){ stream_t *s=mp_mallocz(sizeof(stream_t)+len); if(s==NULL) return NULL; s->fd=-1; + s->pin=STREAM_PIN; s->type=STREAMTYPE_MEMORY; s->buf_pos=0; s->buf_len=len; s->start_pos=0; s->end_pos=len; @@ -239,6 +240,7 @@ if(s==NULL) return NULL; RND_RENAME0(rnd_fill)(s->antiviral_hole,sizeof(s->antiviral_hole)); + s->pin=STREAM_PIN; s->fd=-1; s->type=type; s->sector_size=STREAM_BUFFER_SIZE; @@ -257,10 +259,11 @@ } stream_t* __FASTCALL__ new_ds_stream(demux_stream_t *ds) { - stream_t* s = new_stream(STREAMTYPE_DS); - s->driver=ds->demuxer->stream->driver; - s->priv = ds; - return s; + stream_t* s = new_stream(STREAMTYPE_DS); + s->driver=ds->demuxer->stream->driver; + s->priv = ds; + check_pin("stream",ds->pin,DS_PIN); + return s; } int __FASTCALL__ nc_stream_read_char(stream_t *s) Modified: mplayerxp/libmpdemux/stream.h =================================================================== --- mplayerxp/libmpdemux/stream.h 2012-11-13 08:37:15 UTC (rev 353) +++ mplayerxp/libmpdemux/stream.h 2012-11-13 10:42:13 UTC (rev 354) @@ -40,9 +40,13 @@ struct stream_s; typedef void (* __FASTCALL__ stream_callback)(struct stream_s *s,const stream_packet_t *); +enum { + STREAM_PIN=RND_NUMBER2+RND_CHAR3 +}; /** Stream description */ -typedef struct stream_s{ +typedef struct stream_s { char antiviral_hole[RND_CHAR3]; + unsigned pin; /**< personal identification number */ int fd; /**< file handler */ off_t pos; /**< SOF offset from begin of stream */ int eof; /**< indicates EOF */ @@ -64,7 +68,7 @@ #endif const struct stream_driver_s *driver; /**< low-level stream driver */ stream_callback event_handler; /**< callback for streams which provide events */ -} stream_t; +} stream_t __attribute__ ((packed)); int stream_enable_cache(stream_t *stream,any_t* libinput,int size,int min,int prefill); void stream_disable_cache(stream_t *stream); Modified: mplayerxp/mplayerxp.h =================================================================== --- mplayerxp/mplayerxp.h 2012-11-13 08:37:15 UTC (rev 353) +++ mplayerxp/mplayerxp.h 2012-11-13 10:42:13 UTC (rev 354) @@ -3,8 +3,10 @@ #include <pthread.h> #include <stdint.h> +#include <string.h> #include "mp_config.h" #include "osdep/mplib.h" +#include "xmpcore/xmp_enums.h" typedef struct mp_conf_s { int has_video; @@ -118,11 +120,22 @@ extern pthread_mutex_t audio_timer_mutex; extern void exit_player(const char* why); + static inline void escape_player(const char* why,unsigned num_calls) { show_backtrace(why,num_calls); exit_player(why); } +static inline MPXP_Rc check_pin(const char* module,unsigned pin1,unsigned pin2) { + if(pin1!=pin2) { + char msg[4096]; + strcpy(msg,"Found incorrect PIN in module: "); + strcat(msg,module); + escape_player(msg,mp_conf.max_trace); + } + return MPXP_Ok; +} + extern void mpxp_resync_audio_stream(void); extern void mpxp_reset_vcache(void); extern void __exit_sighandler(void); Modified: mplayerxp/postproc/af.c =================================================================== --- mplayerxp/postproc/af.c 2012-11-13 08:37:15 UTC (rev 353) +++ mplayerxp/postproc/af.c 2012-11-13 10:42:13 UTC (rev 354) @@ -121,6 +121,7 @@ return NULL; } RND_RENAME0(rnd_fill)(_new->antiviral_hole,sizeof(_new->antiviral_hole)); + _new->pin=AF_PIN; _new->parent=s; // Check for commandline parameters strsep(&cmdline, "="); @@ -210,7 +211,7 @@ } // Uninit and remove the filter "af" -void af_remove(af_stream_t* s, af_instance_t* af) +static void af_remove(af_stream_t* s, af_instance_t* af) { if(!af) return; @@ -479,7 +480,7 @@ to the stream s. The filter will be inserted somewhere nice in the list of filters. The return value is a pointer to the new filter, If the filter couldn't be added the return value is NULL. */ -af_instance_t* af_add(af_stream_t* s,const char* name){ +static af_instance_t* af_add(af_stream_t* s,const char* name){ af_instance_t* new; // Sanity check if(!s || !s->first || !name) @@ -573,19 +574,20 @@ function should not be called directly */ MPXP_Rc __FASTCALL__ af_resize_local_buffer(af_instance_t* af,unsigned len) { - // Calculate new length - MSG_V("[libaf] Reallocating memory in module %s, " + // Calculate new length + MSG_V("[libaf] Reallocating memory in module %s, " "old len = %i, new len = %i\n",af->info->name,af->data->len,len); - // If there is a buffer mp_free it - if(af->data->audio) mp_free(af->data->audio); - // Create new buffer and check that it is OK - af->data->audio = mp_malloc(len); - if(!af->data->audio){ - MSG_FATAL(MSGTR_OutOfMemory); - return MPXP_Error; - } - af->data->len=len; - return MPXP_Ok; + // If there is a buffer mp_free it + if(af->data->audio) mp_free(af->data->audio); + // Create new buffer and check that it is OK + af->data->audio = mp_malloc(len); + if(!af->data->audio){ + MSG_FATAL(MSGTR_OutOfMemory); + return MPXP_Error; + } + af->data->len=len; + check_pin("afilter",af->pin,AF_PIN); + return MPXP_Ok; } // send control to all filters, starting with the last until @@ -659,14 +661,15 @@ void af_showconf(af_instance_t *first) { - af_instance_t* af=first; - // ok! - MSG_INFO("[libaf] Using audio filters chain:\n"); - // Iterate through all filters - do{ + af_instance_t* af=first; + // ok! + MSG_INFO("[libaf] Using audio filters chain:\n"); + // Iterate through all filters + check_pin("afilter",af->pin,AF_PIN); + do{ MSG_INFO(" "); if(af->control(af,AF_CONTROL_SHOWCONF,NULL)!=MPXP_Ok) MSG_INFO("[af_%s %s]\n",af->info->name,af->info->info); af=af->next; - }while(af); + }while(af); } Modified: mplayerxp/postproc/af.h =================================================================== --- mplayerxp/postproc/af.h 2012-11-13 08:37:15 UTC (rev 353) +++ mplayerxp/postproc/af.h 2012-11-13 10:42:13 UTC (rev 354) @@ -34,23 +34,27 @@ MPXP_Rc (* __FASTCALL__ open)(struct af_instance_s* vf); } af_info_t; +enum { + AF_PIN=RND_NUMBER6+RND_CHAR6 +}; + // Linked list of audio filters -typedef struct af_instance_s -{ - const af_info_t* info; - char antiviral_hole[RND_CHAR6]; - MPXP_Rc (* __FASTCALL__ control)(struct af_instance_s* af, int cmd, any_t* arg); - void (* __FASTCALL__ uninit)(struct af_instance_s* af); - mp_aframe_t* (* __FASTCALL__ play)(struct af_instance_s* af, mp_aframe_t* data,int final); - any_t* setup; // setup data for this specific instance and filter - mp_aframe_t* data; // configuration for outgoing data stream - struct af_instance_s* next; - struct af_instance_s* prev; - any_t*parent; - double delay; // Delay caused by the filter [ms] - frac_t mul; /* length multiplier: how much does this instance change - the length of the buffer. */ -}af_instance_t; +typedef struct af_instance_s { + const af_info_t* info; + char antiviral_hole[RND_CHAR6]; + unsigned pin; // personal identification number + MPXP_Rc (* __FASTCALL__ control)(struct af_instance_s* af, int cmd, any_t* arg); + void (* __FASTCALL__ uninit)(struct af_instance_s* af); + mp_aframe_t* (* __FASTCALL__ play)(struct af_instance_s* af, mp_aframe_t* data,int final); + any_t* setup; // setup data for this specific instance and filter + mp_aframe_t* data; // configuration for outgoing data stream + struct af_instance_s* next; + struct af_instance_s* prev; + any_t* parent; + double delay; // Delay caused by the filter [ms] + frac_t mul; /* length multiplier: how much does this instance change + the length of the buffer. */ +}af_instance_t __attribute__ ((packed)); // Initialization flags extern int* af_cpu_speed; @@ -118,15 +122,6 @@ // Uninit and remove all filters void af_uninit(af_stream_t* s); -/* Add filter during execution. This function adds the filter "name" - to the stream s. The filter will be inserted somewhere nice in the - list of filters. The return value is a pointer to the new filter, - If the filter couldn't be added the return value is NULL. */ -af_instance_t* af_add(af_stream_t* s,const char* name); - -// Uninit and remove the filter "af" -void af_remove(af_stream_t* s, af_instance_t* af); - // Filter data chunk through the filters in the list mp_aframe_t* __FASTCALL__ RND_RENAME8(af_play)(af_stream_t* s, mp_aframe_t* data); Modified: mplayerxp/postproc/af_ao2.c =================================================================== --- mplayerxp/postproc/af_ao2.c 2012-11-13 08:37:15 UTC (rev 353) +++ mplayerxp/postproc/af_ao2.c 2012-11-13 10:42:13 UTC (rev 354) @@ -159,6 +159,7 @@ af->data=mp_malloc(sizeof(mp_aframe_t)); af->setup=mp_calloc(1,sizeof(af_ao2_t)); if((af->data == NULL) || (af->setup == NULL)) return MPXP_Error; + check_pin("afilter",af->pin,AF_PIN); return MPXP_Ok; } Modified: mplayerxp/postproc/af_center.c =================================================================== --- mplayerxp/postproc/af_center.c 2012-11-13 08:37:15 UTC (rev 353) +++ mplayerxp/postproc/af_center.c 2012-11-13 10:42:13 UTC (rev 354) @@ -104,6 +104,7 @@ return MPXP_Error; // Set default values s->ch = 1; // Channel nr 2 + check_pin("afilter",af->pin,AF_PIN); return MPXP_Ok; } Modified: mplayerxp/postproc/af_channels.c =================================================================== --- mplayerxp/postproc/af_channels.c 2012-11-13 08:37:15 UTC (rev 353) +++ mplayerxp/postproc/af_channels.c 2012-11-13 10:42:13 UTC (rev 354) @@ -282,6 +282,7 @@ af->setup=mp_calloc(1,sizeof(af_channels_t)); if((af->data == NULL) || (af->setup == NULL)) return MPXP_Error; + check_pin("afilter",af->pin,AF_PIN); return MPXP_Ok; } Modified: mplayerxp/postproc/af_comp.c =================================================================== --- mplayerxp/postproc/af_comp.c 2012-11-13 08:37:15 UTC (rev 353) +++ mplayerxp/postproc/af_comp.c 2012-11-13 10:42:13 UTC (rev 354) @@ -17,6 +17,7 @@ #include <math.h> #include <limits.h> +#include "mplayerxp.h" #include "af.h" #include "osdep/mplib.h" @@ -149,6 +150,7 @@ af->setup=mp_calloc(1,sizeof(af_comp_t)); if(af->data == NULL || af->setup == NULL) return MPXP_Error; + check_pin("afilter",af->pin,AF_PIN); return MPXP_Ok; } Modified: mplayerxp/postproc/af_crystality.c =================================================================== --- mplayerxp/postproc/af_crystality.c 2012-11-13 08:37:15 UTC (rev 353) +++ mplayerxp/postproc/af_crystality.c 2012-11-13 10:42:13 UTC (rev 354) @@ -60,6 +60,7 @@ #include <math.h> #include <limits.h> +#include "mplayerxp.h" #include "af.h" #include "aflib.h" @@ -541,6 +542,7 @@ _bufPos = BUF_SIZE - 1; shBufPos = SH_BUF_SIZE - 8; shBufPos1 = SH_BUF_SIZE - 8; + check_pin("afilter",af->pin,AF_PIN); return MPXP_Ok; } Modified: mplayerxp/postproc/af_delay.c =================================================================== --- mplayerxp/postproc/af_delay.c 2012-11-13 08:37:15 UTC (rev 353) +++ mplayerxp/postproc/af_delay.c 2012-11-13 10:42:13 UTC (rev 354) @@ -178,6 +178,7 @@ af->setup=mp_calloc(1,sizeof(af_delay_t)); if(af->data == NULL || af->setup == NULL) return MPXP_Error; + check_pin("afilter",af->pin,AF_PIN); return MPXP_Ok; } Modified: mplayerxp/postproc/af_dummy.c =================================================================== --- mplayerxp/postproc/af_dummy.c 2012-11-13 08:37:15 UTC (rev 353) +++ mplayerxp/postproc/af_dummy.c 2012-11-13 10:42:13 UTC (rev 354) @@ -48,6 +48,7 @@ af->data=mp_malloc(sizeof(mp_aframe_t)); if(af->data == NULL) return MPXP_Error; + check_pin("afilter",af->pin,AF_PIN); return MPXP_Ok; } Modified: mplayerxp/postproc/af_dyn.c =================================================================== --- mplayerxp/postproc/af_dyn.c 2012-11-13 08:37:15 UTC (rev 353) +++ mplayerxp/postproc/af_dyn.c 2012-11-13 10:42:13 UTC (rev 354) @@ -17,6 +17,7 @@ #include <math.h> #include <limits.h> +#include "mplayerxp.h" #include "af.h" #include "osdep/mplib.h" @@ -95,6 +96,7 @@ af->setup=mp_calloc(1,sizeof(af_dyn_t)); if(af->data == NULL || af->setup==NULL) return MPXP_Error; ((af_dyn_t *)(af->setup))->gain=8.; + check_pin("afilter",af->pin,AF_PIN); return MPXP_Ok; } Modified: mplayerxp/postproc/af_echo3d.c =================================================================== --- mplayerxp/postproc/af_echo3d.c 2012-11-13 08:37:15 UTC (rev 353) +++ mplayerxp/postproc/af_echo3d.c 2012-11-13 10:42:13 UTC (rev 354) @@ -27,6 +27,7 @@ #include <math.h> #include <limits.h> +#include "mplayerxp.h" #include "af.h" #include "aflib.h" #include "osdep/mplib.h" @@ -213,6 +214,7 @@ return MPXP_Error; set_defaults(af->setup); init_echo3d(af->setup,44100); + check_pin("afilter",af->pin,AF_PIN); return MPXP_Ok; } Modified: mplayerxp/postproc/af_equalizer.c =================================================================== --- mplayerxp/postproc/af_equalizer.c 2012-11-13 08:37:15 UTC (rev 353) +++ mplayerxp/postproc/af_equalizer.c 2012-11-13 10:42:13 UTC (rev 354) @@ -218,6 +218,7 @@ af->setup=mp_calloc(1,sizeof(af_equalizer_t)); if(af->data == NULL || af->setup == NULL) return MPXP_Error; + check_pin("afilter",af->pin,AF_PIN); return MPXP_Ok; } Modified: mplayerxp/postproc/af_export.c =================================================================== --- mplayerxp/postproc/af_export.c 2012-11-13 08:37:15 UTC (rev 353) +++ mplayerxp/postproc/af_export.c 2012-11-13 10:42:13 UTC (rev 354) @@ -252,7 +252,7 @@ return MPXP_Error; ((af_export_t *)af->setup)->filename = get_path(SHARED_FILE); - + check_pin("afilter",af->pin,AF_PIN); return MPXP_Ok; } Modified: mplayerxp/postproc/af_extrastereo.c =================================================================== --- mplayerxp/postproc/af_extrastereo.c 2012-11-13 08:37:15 UTC (rev 353) +++ mplayerxp/postproc/af_extrastereo.c 2012-11-13 10:42:13 UTC (rev 354) @@ -109,8 +109,8 @@ af->setup=mp_calloc(1,sizeof(af_extrastereo_t)); if(af->data == NULL || af->setup == NULL) return MPXP_Error; - ((af_extrastereo_t*)af->setup)->mul = 2.5; + check_pin("afilter",af->pin,AF_PIN); return MPXP_Ok; } Modified: mplayerxp/postproc/af_ffenc.c =================================================================== --- mplayerxp/postproc/af_ffenc.c 2012-11-13 08:37:15 UTC (rev 353) +++ mplayerxp/postproc/af_ffenc.c 2012-11-13 10:42:13 UTC (rev 354) @@ -214,6 +214,7 @@ af->data=mp_malloc(sizeof(mp_aframe_t)); af->setup=mp_calloc(1,sizeof(af_ffenc_t)); if(af->data == NULL) return MPXP_Error; + check_pin("afilter",af->pin,AF_PIN); return MPXP_Ok; } Modified: mplayerxp/postproc/af_format.c =================================================================== --- mplayerxp/postproc/af_format.c 2012-11-13 08:37:15 UTC (rev 353) +++ mplayerxp/postproc/af_format.c 2012-11-13 10:42:13 UTC (rev 354) @@ -216,6 +216,7 @@ af->data=mp_calloc(1,sizeof(mp_aframe_t)); af->setup=mp_calloc(1,sizeof(af_format_t)); if(af->data == NULL) return MPXP_Error; + check_pin("afilter",af->pin,AF_PIN); return MPXP_Ok; } Modified: mplayerxp/postproc/af_gate.c =================================================================== --- mplayerxp/postproc/af_gate.c 2012-11-13 08:37:15 UTC (rev 353) +++ mplayerxp/postproc/af_gate.c 2012-11-13 10:42:13 UTC (rev 354) @@ -17,6 +17,7 @@ #include <math.h> #include <limits.h> +#include "mplayerxp.h" #include "af.h" #include "osdep/mplib.h" @@ -146,6 +147,7 @@ af->setup=mp_calloc(1,sizeof(af_gate_t)); if(af->data == NULL || af->setup == NULL) return MPXP_Error; + check_pin("afilter",af->pin,AF_PIN); return MPXP_Ok; } Modified: mplayerxp/postproc/af_hrtf.c =================================================================== --- mplayerxp/postproc/af_hrtf.c 2012-11-13 08:37:15 UTC (rev 353) +++ mplayerxp/postproc/af_hrtf.c 2012-11-13 10:42:13 UTC (rev 354) @@ -627,6 +627,7 @@ for(i = 0; i < s->basslen; i++) s->ba_ir[i] *= BASSGAIN; + check_pin("afilter",af->pin,AF_PIN); return MPXP_Ok; } Modified: mplayerxp/postproc/af_karaoke.c =================================================================== --- mplayerxp/postproc/af_karaoke.c 2012-11-13 08:37:15 UTC (rev 353) +++ mplayerxp/postproc/af_karaoke.c 2012-11-13 10:42:13 UTC (rev 354) @@ -11,6 +11,7 @@ #include <stdlib.h> #include <string.h> +#include "mplayerxp.h" #include "af.h" #include "osdep/mplib.h" @@ -62,25 +63,26 @@ // Allocate memory and set function pointers static MPXP_Rc open(af_instance_t* af){ - af->control = control; - af->uninit = uninit; - af->play = play; - af->mul.n = 1; - af->mul.d = 1; - af->data = mp_calloc(1,sizeof(mp_aframe_t)); + af->control = control; + af->uninit = uninit; + af->play = play; + af->mul.n = 1; + af->mul.d = 1; + af->data = mp_calloc(1,sizeof(mp_aframe_t)); - if(af->data == NULL) - return MPXP_Error; + if(af->data == NULL) + return MPXP_Error; - return MPXP_Ok; + check_pin("afilter",af->pin,AF_PIN); + return MPXP_Ok; } // Description of this filter const af_info_t af_info_karaoke = { - "Simple karaoke/voice-removal audio filter", - "karaoke", - "Reynaldo H. Verdejo Pinochet", - "", - AF_FLAGS_REENTRANT, - open + "Simple karaoke/voice-removal audio filter", + "karaoke", + "Reynaldo H. Verdejo Pinochet", + "", + AF_FLAGS_REENTRANT, + open }; Modified: mplayerxp/postproc/af_lp.c =================================================================== --- mplayerxp/postproc/af_lp.c 2012-11-13 08:37:15 UTC (rev 353) +++ mplayerxp/postproc/af_lp.c 2012-11-13 10:42:13 UTC (rev 354) @@ -79,6 +79,7 @@ af->setup=mp_malloc(sizeof(af_lp_t)); if(af->data == NULL) return MPXP_Error; + check_pin("afilter",af->pin,AF_PIN); return MPXP_Ok; } Modified: mplayerxp/postproc/af_pan.c =================================================================== --- mplayerxp/postproc/af_pan.c 2012-11-13 08:37:15 UTC (rev 353) +++ mplayerxp/postproc/af_pan.c 2012-11-13 10:42:13 UTC (rev 354) @@ -172,6 +172,7 @@ if(af->data == NULL || af->setup == NULL) return MPXP_Error; // Set initial pan to pass-through. + check_pin("afilter",af->pin,AF_PIN); return MPXP_Ok; } Modified: mplayerxp/postproc/af_raw.c =================================================================== --- mplayerxp/postproc/af_raw.c 2012-11-13 08:37:15 UTC (rev 353) +++ mplayerxp/postproc/af_raw.c 2012-11-13 10:42:13 UTC (rev 354) @@ -169,6 +169,7 @@ return MPXP_Error; ((af_raw_t *)af->setup)->filename = "1.wav"; + check_pin("afilter",af->pin,AF_PIN); return MPXP_Ok; } Modified: mplayerxp/postproc/af_resample.c =================================================================== --- mplayerxp/postproc/af_resample.c 2012-11-13 08:37:15 UTC (rev 353) +++ mplayerxp/postproc/af_resample.c 2012-11-13 10:42:13 UTC (rev 354) @@ -180,6 +180,7 @@ af->data=mp_calloc(1,sizeof(mp_aframe_t)); af->setup=mp_calloc(1,sizeof(af_resample_t)); if(af->data == NULL || af->setup == NULL) return MPXP_Error; + check_pin("afilter",af->pin,AF_PIN); return MPXP_Ok; } Modified: mplayerxp/postproc/af_scaletempo.c =================================================================== --- mplayerxp/postproc/af_scaletempo.c 2012-11-13 08:37:15 UTC (rev 353) +++ mplayerxp/postproc/af_scaletempo.c 2012-11-13 10:42:13 UTC (rev 354) @@ -455,6 +455,7 @@ s->ms_stride = 60; s->percent_overlap = .20; s->ms_search = 14; + check_pin("afilter",af->pin,AF_PIN); return MPXP_Ok; } Modified: mplayerxp/postproc/af_sinesuppress.c =================================================================== --- mplayerxp/postproc/af_sinesuppress.c 2012-11-13 08:37:15 UTC (rev 353) +++ mplayerxp/postproc/af_sinesuppress.c 2012-11-13 10:42:13 UTC (rev 354) @@ -157,6 +157,7 @@ ((af_sinesuppress_t*)af->setup)->freq = 50.0; ((af_sinesuppress_t*)af->setup)->decay = 0.0001; + check_pin("afilter",af->pin,AF_PIN); return MPXP_Ok; } Modified: mplayerxp/postproc/af_sub.c =================================================================== --- mplayerxp/postproc/af_sub.c 2012-11-13 08:37:15 UTC (rev 353) +++ mplayerxp/postproc/af_sub.c 2012-11-13 10:42:13 UTC (rev 354) @@ -172,6 +172,7 @@ // Set default values s->ch = 5; // Channel nr 6 s->fc = 60; // Cutoff frequency 60Hz + check_pin("afilter",af->pin,AF_PIN); return MPXP_Ok; } Modified: mplayerxp/postproc/af_surround.c =================================================================== --- mplayerxp/postproc/af_surround.c 2012-11-13 08:37:15 UTC (rev 353) +++ mplayerxp/postproc/af_surround.c 2012-11-13 10:42:13 UTC (rev 354) @@ -260,6 +260,7 @@ if(af->data == NULL || af->setup == NULL) return MPXP_Error; ((af_surround_t*)af->setup)->d = 20; + check_pin("afilter",af->pin,AF_PIN); return MPXP_Ok; } Modified: mplayerxp/postproc/af_volnorm.c =================================================================== --- mplayerxp/postproc/af_volnorm.c 2012-11-13 08:37:15 UTC (rev 353) +++ mplayerxp/postproc/af_volnorm.c 2012-11-13 10:42:13 UTC (rev 354) @@ -333,6 +333,7 @@ ((af_volnorm_t*)af->setup)->mem[i].len = 0; ((af_volnorm_t*)af->setup)->mem[i].avg = 0; } + check_pin("afilter",af->pin,AF_PIN); return MPXP_Ok; } Modified: mplayerxp/postproc/af_volume.c =================================================================== --- mplayerxp/postproc/af_volume.c 2012-11-13 08:37:15 UTC (rev 353) +++ mplayerxp/postproc/af_volume.c 2012-11-13 10:42:13 UTC (rev 354) @@ -216,6 +216,7 @@ ((af_volume_t*)af->setup)->enable[i] = 1; ((af_volume_t*)af->setup)->level[i] = 1.0; } + check_pin("afilter",af->pin,AF_PIN); return MPXP_Ok; } Modified: mplayerxp/postproc/vf.c =================================================================== --- mplayerxp/postproc/vf.c 2012-11-13 08:37:15 UTC (rev 353) +++ mplayerxp/postproc/vf.c 2012-11-13 10:42:13 UTC (rev 354) @@ -261,6 +261,7 @@ mpi->flags|=MP_IMGFLAG_TYPE_DISPLAYED; } } + check_pin("vfilter",vf->pin,VF_PIN); MSG_DBG2("vf_get_new_image returns xp_idx=%i\n",mpi->xp_idx); return mpi; } @@ -297,6 +298,7 @@ } vf=mp_mallocz(sizeof(vf_instance_t)); RND_RENAME0(rnd_fill)(vf->antiviral_hole,sizeof(vf->antiviral_hole)); + vf->pin=VF_PIN; vf->info=filter_list[i]; vf->next=next; vf->prev=NULL; @@ -319,10 +321,11 @@ } vf_instance_t* __FASTCALL__ RND_RENAME9(vf_open_filter)(vf_instance_t* next,sh_video_t *sh,const char *name,const char *args,any_t*libinput){ - if(strcmp(name,"vo")) { - MSG_V("Open video filter: [%s]\n", name); - } - return vf_open_plugin(next,sh,name,args,libinput); + if(strcmp(name,"vo")) { + MSG_V("Open video filter: [%s]\n", name); + } + if(next) check_pin("vfilter",next->pin,VF_PIN); + return vf_open_plugin(next,sh,name,args,libinput); } //============================================================================ @@ -402,6 +405,7 @@ vf->next=vf2; } vf_showlist(vf); + check_pin("vfilter",vf->pin,VF_PIN); return vf->next->config(vf->next,width,height,d_width,d_height,voflags,outfmt); } @@ -412,6 +416,7 @@ int __FASTCALL__ vf_next_query_format(struct vf_instance_s* vf, unsigned int fmt,unsigned width,unsigned height){ int flags=vf->next?vf->next->query_format(vf->next,fmt,width,height):(int)vf->default_caps; if(flags) flags|=vf->default_caps; + check_pin("vfilter",vf->pin,VF_PIN); return flags; } @@ -420,6 +425,7 @@ vf->dw=width; vf->dh=height; vf->dfourcc=fmt; + check_pin("vfilter",vf->pin,VF_PIN); return vf->query_format(vf,fmt,width,height); } Modified: mplayerxp/postproc/vf.h =================================================================== --- mplayerxp/postproc/vf.h 2012-11-13 08:37:15 UTC (rev 353) +++ mplayerxp/postproc/vf.h 2012-11-13 10:42:13 UTC (rev 354) @@ -28,9 +28,14 @@ int static_idx; } vf_image_context_t; +enum { + VF_PIN=RND_NUMBER7+RND_CHAR7 +}; + typedef struct vf_instance_s { const vf_info_t* info; char antiviral_hole[RND_CHAR5]; + unsigned pin; // personal identification number // funcs: int (* __FASTCALL__ config)(struct vf_instance_s* vf, int width, int height, int d_width, int d_height, @@ -62,7 +67,7 @@ unsigned dw,dh,dfourcc; /* event handler*/ any_t* libinput; -} vf_instance_t; +} vf_instance_t __attribute__ ((packed)); // Configuration switches typedef struct vf_cfg_s{ Modified: mplayerxp/postproc/vf_1bpp.c =================================================================== --- mplayerxp/postproc/vf_1bpp.c 2012-11-13 08:37:15 UTC (rev 353... [truncated message content] |