[Mplayerxp-cvslog] SF.net SVN: mplayerxp:[327] mplayerxp
Brought to you by:
olov
From: <nic...@us...> - 2012-11-11 13:44:24
|
Revision: 327 http://mplayerxp.svn.sourceforge.net/mplayerxp/?rev=327&view=rev Author: nickols_k Date: 2012-11-11 13:44:14 +0000 (Sun, 11 Nov 2012) Log Message: ----------- use universal return codes + s_null.c Modified Paths: -------------- mplayerxp/libmpdemux/Makefile mplayerxp/libmpdemux/cache2.c mplayerxp/libmpdemux/cdd.h mplayerxp/libmpdemux/cdda.c mplayerxp/libmpdemux/cddb.c mplayerxp/libmpdemux/demux_aiff.c mplayerxp/libmpdemux/demux_asf.c mplayerxp/libmpdemux/demux_audio.c mplayerxp/libmpdemux/demux_avi.c mplayerxp/libmpdemux/demux_bmp.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_null.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/parse_es.c mplayerxp/libmpdemux/parse_mp4.c mplayerxp/libmpdemux/parse_mp4.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.c Added Paths: ----------- mplayerxp/libmpdemux/s_null.c Modified: mplayerxp/libmpdemux/Makefile =================================================================== --- mplayerxp/libmpdemux/Makefile 2012-11-11 11:47:09 UTC (rev 326) +++ mplayerxp/libmpdemux/Makefile 2012-11-11 13:44:14 UTC (rev 327) @@ -6,7 +6,7 @@ DO_MAKE = @ for i in $(SUBDIRS); do $(MAKE) -C $$i $@ || exit; done DO_ALL = @ for i in $(SUBDIRS); do $(MAKE) -C $$i all || exit; done -SRCS = s_file.c s_ffmpeg.c +SRCS = s_file.c s_ffmpeg.c s_null.c ifeq ($(HAVE_LIBCDIO_CDDA),yes) SRCS += s_cdd.c cdda.c ifeq ($(HAVE_STREAMING),yes) Modified: mplayerxp/libmpdemux/cache2.c =================================================================== --- mplayerxp/libmpdemux/cache2.c 2012-11-11 11:47:09 UTC (rev 326) +++ mplayerxp/libmpdemux/cache2.c 2012-11-11 13:44:14 UTC (rev 327) @@ -106,8 +106,7 @@ new_start = readpos - c->back_size; if(new_start<c->stream->start_pos) new_start=c->stream->start_pos; seek_eof=0; - if(!in_cache && c->stream->type&STREAMTYPE_SEEKABLE) - { + if(!in_cache && c->stream->type&STREAMTYPE_SEEKABLE) { /* seeking... */ MSG_DBG2("Out of boundaries... seeking to %lli {in_cache(%i) %lli<%lli>%lli} \n" ,new_start,in_cache,START_FILEPOS(c),readpos,END_FILEPOS(c)); @@ -119,13 +118,10 @@ if(c->packets[c->first].filepos < new_start-(off_t)c->stream->sector_size) MSG_WARN("CACHE2: found wrong offset after seeking %lli (wanted: %lli)\n",c->packets[c->first].filepos,new_start); MSG_DBG2("Seek done. new pos: %lli\n",START_FILEPOS(c)); - } - else - { + } else { /* find new start of buffer according on readpos */ cidx=c->first; - do - { + do { if((new_start>=c->packets[cidx].filepos&&new_start<c->packets[cidx].filepos+c->packets[cidx].sp.len) && !c->packets[cidx].sp.type) break; cidx=CP_NEXT(c,cidx); @@ -134,8 +130,7 @@ c->first=cidx; } CACHE2_TUNLOCK(c); - if(CP_NEXT(c,c->last) == c->first || c->eof) - { + if(CP_NEXT(c,c->last) == c->first || c->eof) { MSG_DBG2("CACHE2: cache full\n"); return 0; /* cache full */ } @@ -152,17 +147,15 @@ c->stream->driver->read(c->stream,&c->packets[cidx].sp); MSG_DBG2("CACHE2: read_packet at %lli (wanted %u got %u type %i)",c->packets[cidx].filepos,c->sector_size,c->packets[cidx].sp.len,c->packets[cidx].sp.type); if(mp_conf.verbose>1) - if(c->packets[cidx].sp.len>8) - { + if(c->packets[cidx].sp.len>8) { int i; for(i=0;i<8;i++) MSG_DBG2("%02X ",(int)(unsigned char)c->packets[cidx].sp.buf[i]); - } + } MSG_DBG2("\n"); - if(c->stream->driver->control(c->stream,SCTRL_EOF,NULL)==SCTRL_OK) legacy_eof=1; + if(c->stream->driver->control(c->stream,SCTRL_EOF,NULL)==MPXP_Ok) legacy_eof=1; else legacy_eof=0; - if(c->packets[cidx].sp.len < 0 || (c->packets[cidx].sp.len == 0 && c->packets[cidx].sp.type == 0) || legacy_eof || seek_eof) - { + if(c->packets[cidx].sp.len < 0 || (c->packets[cidx].sp.len == 0 && c->packets[cidx].sp.type == 0) || legacy_eof || seek_eof) { /* EOF */ MSG_DBG2("CACHE2: guess EOF: %lli %lli\n",START_FILEPOS(c),END_FILEPOS(c)); c->packets[cidx].state|=CPF_EOF; @@ -180,8 +173,7 @@ CACHE2_PACKET_TUNLOCK(cidx); cidx=CP_NEXT(c,cidx); MSG_DBG2("CACHE2: start=%lli end_filepos = %lli\n",START_FILEPOS(c),END_FILEPOS(c)); - if(cidx==c->first) - { + if(cidx==c->first) { MSG_DBG2("CACHE2: end of queue is reached: %p\n",c->first); break; } Modified: mplayerxp/libmpdemux/cdd.h =================================================================== --- mplayerxp/libmpdemux/cdd.h 2012-11-11 11:47:09 UTC (rev 326) +++ mplayerxp/libmpdemux/cdd.h 2012-11-11 13:44:14 UTC (rev 327) @@ -65,16 +65,16 @@ lsn_t end_sector; } cdda_priv; -cd_info_t* __FASTCALL__ cd_info_new(); -void __FASTCALL__ cd_info_free(cd_info_t *cd_info); +cd_info_t* __FASTCALL__ cd_info_new(); +void __FASTCALL__ cd_info_free(cd_info_t *cd_info); cd_track_t* __FASTCALL__ cd_info_add_track(cd_info_t *cd_info, char *track_name, unsigned int track_nb, unsigned int min, unsigned int sec, unsigned int msec, unsigned long frame_begin, unsigned long frame_length); cd_track_t* __FASTCALL__ cd_info_get_track(cd_info_t *cd_info, unsigned int track_nb); -int __FASTCALL__ open_cdda(stream_t*,const char* dev,const char* track); -int __FASTCALL__ open_cddb(stream_t*,const char* dev,const char* track); -int __FASTCALL__ read_cdda(stream_t* s,char *buf,track_t* trackidx); -void __FASTCALL__ seek_cdda(stream_t* s,off_t pos,track_t *trackidx); -off_t __FASTCALL__ tell_cdda(stream_t* s); -void __FASTCALL__ close_cdda(stream_t* s); +MPXP_Rc __FASTCALL__ open_cdda(stream_t*,const char* dev,const char* track); +MPXP_Rc __FASTCALL__ open_cddb(stream_t*,const char* dev,const char* track); +int __FASTCALL__ read_cdda(stream_t* s,char *buf,track_t* trackidx); +void __FASTCALL__ seek_cdda(stream_t* s,off_t pos,track_t *trackidx); +off_t __FASTCALL__ tell_cdda(stream_t* s); +void __FASTCALL__ close_cdda(stream_t* s); void cdda_register_options(m_config_t* cfg); #endif // __CDD_H__ Modified: mplayerxp/libmpdemux/cdda.c =================================================================== --- mplayerxp/libmpdemux/cdda.c 2012-11-11 11:47:09 UTC (rev 326) +++ mplayerxp/libmpdemux/cdda.c 2012-11-11 13:44:14 UTC (rev 327) @@ -72,67 +72,66 @@ return rval; } -int __FASTCALL__ open_cdda(stream_t *st,const char* dev,const char* arg) { - unsigned cd_tracks; - cdda_priv* priv; - unsigned int audiolen=0; - unsigned i; - unsigned char arr[256]; - int st_inited; +MPXP_Rc __FASTCALL__ open_cdda(stream_t *st,const char* dev,const char* arg) { + unsigned cd_tracks; + cdda_priv* priv; + unsigned int audiolen=0; + unsigned i; + unsigned char arr[256]; + int st_inited; - priv = (cdda_priv*)mp_mallocz(sizeof(cdda_priv)); + priv = (cdda_priv*)mp_mallocz(sizeof(cdda_priv)); - priv->cd = cdio_cddap_identify(dev,mp_conf.verbose?1:0,NULL); + priv->cd = cdio_cddap_identify(dev,mp_conf.verbose?1:0,NULL); - if(!priv->cd) { - MSG_ERR("Can't open cdda device: %s\n",dev); - mp_free(priv); - return 0; - } + if(!priv->cd) { + MSG_ERR("Can't open cdda device: %s\n",dev); + mp_free(priv); + return MPXP_False; + } - cdio_cddap_verbose_set(priv->cd, mp_conf.verbose?CDDA_MESSAGE_PRINTIT:CDDA_MESSAGE_FORGETIT, mp_conf.verbose?CDDA_MESSAGE_PRINTIT:CDDA_MESSAGE_FORGETIT); + cdio_cddap_verbose_set(priv->cd, mp_conf.verbose?CDDA_MESSAGE_PRINTIT:CDDA_MESSAGE_FORGETIT, mp_conf.verbose?CDDA_MESSAGE_PRINTIT:CDDA_MESSAGE_FORGETIT); - if(cdio_cddap_open(priv->cd) != 0) { - MSG_ERR("Can't open disc\n"); - cdda_close(priv->cd); - mp_free(priv); - return 0; - } + if(cdio_cddap_open(priv->cd) != 0) { + MSG_ERR("Can't open disc\n"); + cdda_close(priv->cd); + mp_free(priv); + return MPXP_False; + } - cd_tracks=cdio_cddap_tracks(priv->cd); - MSG_V("Found %d tracks on disc\n",cd_tracks); - if(!arg[0]) - for(i=1;i<=cd_tracks;i++) priv->tracks[i-1].play=1; - cdda_parse_tracks(arr,sizeof(arr)/sizeof(unsigned),arg); - for(i=1;i<=256;i++) if (arr[i]) priv->tracks[i-1].play=1; + cd_tracks=cdio_cddap_tracks(priv->cd); + MSG_V("Found %d tracks on disc\n",cd_tracks); + if(!arg[0]) + for(i=1;i<=cd_tracks;i++) priv->tracks[i-1].play=1; + cdda_parse_tracks(arr,sizeof(arr)/sizeof(unsigned),arg); + for(i=1;i<=256;i++) if (arr[i]) priv->tracks[i-1].play=1; - st_inited=0; - MSG_V("[CDDA] Queued tracks:"); - for(i=0;i<cd_tracks;i++) { - if(priv->tracks[i].play) { - priv->tracks[i].start_sector=cdio_cddap_track_firstsector(priv->cd,i+1); - priv->tracks[i].end_sector=cdio_cddap_track_lastsector(priv->cd,i+1); - MSG_V(" %d[%d-%d]",i+1,priv->tracks[i].start_sector,priv->tracks[i].end_sector); - if(!st_inited) { priv->start_sector=priv->tracks[i].start_sector; st_inited=1; } - priv->end_sector=priv->tracks[i].end_sector; - audiolen += priv->tracks[i].end_sector-priv->tracks[i].start_sector+1; + st_inited=0; + MSG_V("[CDDA] Queued tracks:"); + for(i=0;i<cd_tracks;i++) { + if(priv->tracks[i].play) { + priv->tracks[i].start_sector=cdio_cddap_track_firstsector(priv->cd,i+1); + priv->tracks[i].end_sector=cdio_cddap_track_lastsector(priv->cd,i+1); + MSG_V(" %d[%d-%d]",i+1,priv->tracks[i].start_sector,priv->tracks[i].end_sector); + if(!st_inited) { priv->start_sector=priv->tracks[i].start_sector; st_inited=1; } + priv->end_sector=priv->tracks[i].end_sector; + audiolen += priv->tracks[i].end_sector-priv->tracks[i].start_sector+1; + } } - } - for(;i<256;i++) priv->tracks[i].play=0; - MSG_V("\n"); - priv->min = (unsigned int)(audiolen/(60*75)); - priv->sec = (unsigned int)((audiolen/75)%60); - priv->msec = (unsigned int)(audiolen%75); + for(;i<256;i++) priv->tracks[i].play=0; + MSG_V("\n"); + priv->min = (unsigned int)(audiolen/(60*75)); + priv->sec = (unsigned int)((audiolen/75)%60); + priv->msec = (unsigned int)(audiolen%75); - if(speed) - cdio_cddap_speed_set(priv->cd,speed); + if(speed) cdio_cddap_speed_set(priv->cd,speed); - priv->sector = priv->start_sector; - st->type = STREAMTYPE_SEEKABLE|STREAMTYPE_RAWAUDIO; - st->priv = priv; - st->start_pos = priv->start_sector*CDIO_CD_FRAMESIZE_RAW; - st->end_pos = priv->end_sector*CDIO_CD_FRAMESIZE_RAW; - return 1; + priv->sector = priv->start_sector; + st->type = STREAMTYPE_SEEKABLE|STREAMTYPE_RAWAUDIO; + st->priv = priv; + st->start_pos = priv->start_sector*CDIO_CD_FRAMESIZE_RAW; + st->end_pos = priv->end_sector*CDIO_CD_FRAMESIZE_RAW; + return MPXP_Ok; } static lsn_t map_sector(cdda_priv*p,lsn_t sector,track_t *tr) Modified: mplayerxp/libmpdemux/cddb.c =================================================================== --- mplayerxp/libmpdemux/cddb.c 2012-11-11 11:47:09 UTC (rev 326) +++ mplayerxp/libmpdemux/cddb.c 2012-11-11 13:44:14 UTC (rev 327) @@ -525,43 +525,41 @@ return 0; } -int __FASTCALL__ cddb_resolve(any_t*libinput,char **xmcd_file) { - char cddb_cache_dir[] = DEFAULT_CACHE_DIR; - char *home_dir = NULL; - cddb_data_t cddb_data; +MPXP_Rc __FASTCALL__ cddb_resolve(any_t*libinput,char **xmcd_file) { + char cddb_cache_dir[] = DEFAULT_CACHE_DIR; + char *home_dir = NULL; + cddb_data_t cddb_data; - cddb_data.libinput=libinput; - cddb_data.tracks = read_toc(); - cddb_data.disc_id = cddb_discid(cddb_data.tracks); - cddb_data.anonymous = 1; // Don't send user info by default - - home_dir = getenv("HOME"); - if( home_dir==NULL ) { - cddb_data.cache_dir = NULL; - } else { - cddb_data.cache_dir = (char*)mp_malloc(strlen(home_dir)+strlen(cddb_cache_dir)+1); - if( cddb_data.cache_dir==NULL ) { - MSG_FATAL("Memory allocation failed\n"); - return -1; - } - sprintf(cddb_data.cache_dir, "%s%s", home_dir, cddb_cache_dir ); - } + cddb_data.libinput=libinput; + cddb_data.tracks = read_toc(); + cddb_data.disc_id = cddb_discid(cddb_data.tracks); + cddb_data.anonymous = 1; // Don't send user info by default - // Check for a cached file - if( cddb_read_cache(&cddb_data)<0 ) { - // No Cache found - if( cddb_retrieve(&cddb_data)<0 ) { - return -1; - } + home_dir = getenv("HOME"); + if( home_dir==NULL ) { + cddb_data.cache_dir = NULL; + } else { + cddb_data.cache_dir = (char*)mp_malloc(strlen(home_dir)+strlen(cddb_cache_dir)+1); + if( cddb_data.cache_dir==NULL ) { + MSG_FATAL("Memory allocation failed\n"); + return MPXP_False; } - - if( cddb_data.xmcd_file!=NULL ) { -// printf("%s\n", cddb_data.xmcd_file ); - *xmcd_file = cddb_data.xmcd_file; - return 0; + sprintf(cddb_data.cache_dir, "%s%s", home_dir, cddb_cache_dir ); + } + // Check for a cached file + if( cddb_read_cache(&cddb_data)<0 ) { + // No Cache found + if( cddb_retrieve(&cddb_data)<0 ) { + return MPXP_False; } - - return -1; + } + + if( cddb_data.xmcd_file!=NULL ) { +// printf("%s\n", cddb_data.xmcd_file ); + *xmcd_file = cddb_data.xmcd_file; + return MPXP_Ok; + } + return MPXP_False; } /******************************************************************************************************************* @@ -571,15 +569,15 @@ *******************************************************************************************************************/ cd_info_t* __FASTCALL__ cd_info_new() { - cd_info_t *cd_info = NULL; - - cd_info = (cd_info_t*)mp_mallocz(sizeof(cd_info_t)); - if( cd_info==NULL ) { - MSG_FATAL("Memory allocation failed\n"); - return NULL; - } - - return cd_info; + cd_info_t *cd_info = NULL; + + cd_info = (cd_info_t*)mp_mallocz(sizeof(cd_info_t)); + if( cd_info==NULL ) { + MSG_FATAL("Memory allocation failed\n"); + return NULL; + } + + return cd_info; } void __FASTCALL__ cd_info_free(cd_info_t *cd_info) { @@ -781,19 +779,19 @@ return cd_info; } -int __FASTCALL__ open_cddb(stream_t *stream,const char *dev, const char *track) { - cd_info_t *cd_info = NULL; - char *xmcd_file = NULL; - int ret; - - ret = cddb_resolve(stream->streaming_ctrl->libinput,&xmcd_file); - if( ret==0 ) { - cd_info = cddb_parse_xmcd(xmcd_file); - mp_free(xmcd_file); - cd_info_debug( cd_info ); - } - ret = open_cdda(stream, dev, track); +MPXP_Rc __FASTCALL__ open_cddb(stream_t *stream,const char *dev, const char *track) { + cd_info_t *cd_info = NULL; + char *xmcd_file = NULL; + MPXP_Rc ret; - return ret; + ret = cddb_resolve(stream->streaming_ctrl->libinput,&xmcd_file); + if( ret==MPXP_False ) { + cd_info = cddb_parse_xmcd(xmcd_file); + mp_free(xmcd_file); + cd_info_debug( cd_info ); + } + ret = open_cdda(stream, dev, track); + + return ret; } #endif Modified: mplayerxp/libmpdemux/demux_aiff.c =================================================================== --- mplayerxp/libmpdemux/demux_aiff.c 2012-11-11 11:47:09 UTC (rev 326) +++ mplayerxp/libmpdemux/demux_aiff.c 2012-11-11 13:44:14 UTC (rev 327) @@ -34,15 +34,15 @@ int verc; }priv_t; -static int aiff_probe(demuxer_t* demuxer) +static MPXP_Rc aiff_probe(demuxer_t* demuxer) { char buf[12]; stream_t *s; s = demuxer->stream; stream_read(s,buf,12); - if(*((uint32_t *)&buf[0])==mmioFOURCC('F','O','R','M') && *((uint32_t *)&buf[8])==mmioFOURCC('A','I','F','F')) return 1; - if(*((uint32_t *)&buf[0])==mmioFOURCC('F','O','R','M') && *((uint32_t *)&buf[8])==mmioFOURCC('A','I','F','C')) return 1; - return 0; + if(*((uint32_t *)&buf[0])==mmioFOURCC('F','O','R','M') && *((uint32_t *)&buf[8])==mmioFOURCC('A','I','F','F')) return MPXP_Ok; + if(*((uint32_t *)&buf[0])==mmioFOURCC('F','O','R','M') && *((uint32_t *)&buf[8])==mmioFOURCC('A','I','F','C')) return MPXP_Ok; + return MPXP_False; } static demuxer_t* aiff_open(demuxer_t* demuxer) { @@ -216,9 +216,9 @@ mp_free(demuxer->priv); } -static int aiff_control(demuxer_t *demuxer,int cmd,any_t*args) +static MPXP_Rc aiff_control(demuxer_t *demuxer,int cmd,any_t*args) { - return DEMUX_UNKNOWN; + return MPXP_Unknown; } demuxer_driver_t demux_aiff = Modified: mplayerxp/libmpdemux/demux_asf.c =================================================================== --- mplayerxp/libmpdemux/demux_asf.c 2012-11-11 11:47:09 UTC (rev 326) +++ mplayerxp/libmpdemux/demux_asf.c 2012-11-11 13:44:14 UTC (rev 327) @@ -112,7 +112,7 @@ } } -static int asf_probe(demuxer_t *demuxer){ +static MPXP_Rc asf_probe(demuxer_t *demuxer){ const unsigned char asfhdrguid[16]= {0x30,0x26,0xB2,0x75,0x8E,0x66,0xCF,0x11,0xA6,0xD9,0x00,0xAA,0x00,0x62,0xCE,0x6C}; const unsigned char asf2hdrguid[16]={0xD1,0x29,0xE2,0xD6,0xDA,0x35,0xD1,0x11,0x90,0x34,0x00,0xA0,0xC9,0x03,0x49,0xBE}; asf_priv_t *apriv; @@ -129,20 +129,20 @@ if(memcmp(asf2hdrguid,apriv->asfh.objh.guid,16)==0){ MSG_ERR("ASF_check: found ASF v2 guid!\nCurrently is not supported - please report!\n"); mp_free(demuxer->priv); - return 0; // not ASF guid + return MPXP_False; // not ASF guid } if(memcmp(asfhdrguid,apriv->asfh.objh.guid,16)){ MSG_V("ASF_check: not ASF guid!\n"); mp_free(demuxer->priv); - return 0; // not ASF guid + return MPXP_False; // not ASF guid } if(apriv->asfh.cno>256){ MSG_V("ASF_check: invalid subchunks_no %d\n",(int) apriv->asfh.cno); mp_free(demuxer->priv); - return 0; // invalid header??? + return MPXP_False; // invalid header??? } demuxer->file_format=DEMUXER_TYPE_ASF; - return 1; + return MPXP_Ok; } static demuxer_t* asf_open(demuxer_t *demuxer){ @@ -712,9 +712,9 @@ mp_free(demuxer->priv); } -static int asf_control(demuxer_t *demuxer,int cmd,any_t*args) +static MPXP_Rc asf_control(demuxer_t *demuxer,int cmd,any_t*args) { - return DEMUX_UNKNOWN; + return MPXP_Unknown; } demuxer_driver_t demux_asf = Modified: mplayerxp/libmpdemux/demux_audio.c =================================================================== --- mplayerxp/libmpdemux/demux_audio.c 2012-11-11 11:47:09 UTC (rev 326) +++ mplayerxp/libmpdemux/demux_audio.c 2012-11-11 13:44:14 UTC (rev 327) @@ -792,7 +792,7 @@ return retval; } -static int audio_probe(demuxer_t* demuxer) +static MPXP_Rc audio_probe(demuxer_t* demuxer) { uint32_t fcc1,fcc2; stream_t *s; @@ -805,13 +805,13 @@ { stream_skip(s,4); fcc2 = stream_read_fourcc(s); - if(fcc2 == mmioFOURCC('W','A','V','E')) return 1; + if(fcc2 == mmioFOURCC('W','A','V','E')) return MPXP_Ok; } else - if(p[0] == 'I' && p[1] == 'D' && p[2] == '3' && (p[3] >= 2)) return 1; + if(p[0] == 'I' && p[1] == 'D' && p[2] == '3' && (p[3] >= 2)) return MPXP_Ok; else - if(audio_get_raw_id(demuxer,0,&fcc1,&fcc2,&fcc2)) return 1; - return 0; + if(audio_get_raw_id(demuxer,0,&fcc1,&fcc2,&fcc2)) return MPXP_Ok; + return MPXP_False; } #define FRAMES_FLAG 0x0001 @@ -1775,9 +1775,9 @@ mp_free(priv); } -static int audio_control(demuxer_t *demuxer,int cmd,any_t*args) +static MPXP_Rc audio_control(demuxer_t *demuxer,int cmd,any_t*args) { - return DEMUX_UNKNOWN; + return MPXP_Unknown; } /****************** Options stuff ******************/ Modified: mplayerxp/libmpdemux/demux_avi.c =================================================================== --- mplayerxp/libmpdemux/demux_avi.c 2012-11-11 11:47:09 UTC (rev 326) +++ mplayerxp/libmpdemux/demux_avi.c 2012-11-11 13:44:14 UTC (rev 327) @@ -1103,7 +1103,7 @@ id=stream_read_dword_le(demux->stream); // list type continue; } - + if(id==mmioFOURCC('R','I','F','F')){ MSG_V("additional RIFF header...\n"); id=stream_read_dword_le(demux->stream); // "AVIX" @@ -1517,7 +1517,7 @@ } #define formtypeON2 mmioFOURCC('O', 'N', '2', 'f') -static int avi_probe(demuxer_t *demuxer) +static MPXP_Rc avi_probe(demuxer_t *demuxer) { uint32_t riff,id; @@ -1525,9 +1525,9 @@ stream_read_dword_le(demuxer->stream); /*filesize */ id=stream_read_dword_le(demuxer->stream); /* "AVI " */ demuxer->file_format=DEMUXER_TYPE_AVI; - if(riff == mmioFOURCC('R','I','F','F') && id == formtypeAVI) return 1; - if(riff == mmioFOURCC('O','N','2',' ') && id == formtypeON2) return 1; - return 0; + if(riff == mmioFOURCC('R','I','F','F') && id == formtypeAVI) return MPXP_Ok; + if(riff == mmioFOURCC('O','N','2',' ') && id == formtypeON2) return MPXP_Ok; + return MPXP_False; } static void avi_close(demuxer_t *demuxer) @@ -1542,9 +1542,9 @@ mp_free(priv); } -static int avi_control(demuxer_t *demuxer,int cmd,any_t*args) +static MPXP_Rc avi_control(demuxer_t *demuxer,int cmd,any_t*args) { - return DEMUX_UNKNOWN; + return MPXP_Unknown; } static const config_t avi_options[] = { Modified: mplayerxp/libmpdemux/demux_bmp.c =================================================================== --- mplayerxp/libmpdemux/demux_bmp.c 2012-11-11 11:47:09 UTC (rev 326) +++ mplayerxp/libmpdemux/demux_bmp.c 2012-11-11 13:44:14 UTC (rev 327) @@ -80,13 +80,13 @@ static SDL_RWops my_rw; static SDL_Surface *img; -static int bmp_probe(demuxer_t *demuxer) +static MPXP_Rc bmp_probe(demuxer_t *demuxer) { demux_dup_rw_stream(demuxer,&my_rw); stream_reset(demuxer->stream); img = IMG_Load_RW(&my_rw,0); if(img) demuxer->file_format=DEMUXER_TYPE_BMP; - return img ? 1 : 0; + return img ? MPXP_Ok : MPXP_False; } static int bmp_demux(demuxer_t *demuxer,demux_stream_t *__ds) @@ -297,9 +297,9 @@ } #endif -static int bmp_control(demuxer_t *demuxer,int cmd,any_t*args) +static MPXP_Rc bmp_control(demuxer_t *demuxer,int cmd,any_t*args) { - return DEMUX_UNKNOWN; + return MPXP_Unknown; } demuxer_driver_t demux_bmp = Modified: mplayerxp/libmpdemux/demux_dv.c =================================================================== --- mplayerxp/libmpdemux/demux_dv.c 2012-11-11 11:47:09 UTC (rev 326) +++ mplayerxp/libmpdemux/demux_dv.c 2012-11-11 13:44:14 UTC (rev 327) @@ -67,7 +67,7 @@ frames->current_filepos=newpos*frames->frame_size; } -static int dv_probe(demuxer_t *demuxer) +static MPXP_Rc dv_probe(demuxer_t *demuxer) { unsigned char tmp_buffer[DV_PAL_FRAME_SIZE]; int bytes_read=0; @@ -78,26 +78,20 @@ bytes_read=stream_read(demuxer->stream,tmp_buffer,DV_PAL_FRAME_SIZE); if ((bytes_read!=DV_PAL_FRAME_SIZE) && (bytes_read!=DV_NTSC_FRAME_SIZE)) - return 0; + return MPXP_False; - td=dv_decoder_new(TRUE,TRUE,FALSE); - if (!td) - return 0; + if(!(td=dv_decoder_new(TRUE,TRUE,FALSE))) return MPXP_False; td->quality=DV_QUALITY_BEST; - result=dv_parse_header(td, tmp_buffer); - if (result<0) - return 0; + if((result=dv_parse_header(td, tmp_buffer))<0) return MPXP_False; if ((( td->num_dif_seqs==10) || (td->num_dif_seqs==12)) && (td->width==720) && ((td->height==576) || (td->height==480))) result=1; dv_decoder_free(td); - if (result) - return 1; - else - return 0; + if (result) return MPXP_Ok; + return MPXP_False; } // return value: @@ -237,8 +231,8 @@ mp_free(frames); } -static int dv_control(demuxer_t *demuxer,int cmd, any_t*arg) { - return DEMUX_UNKNOWN; +static MPXP_Rc dv_control(demuxer_t *demuxer,int cmd, any_t*arg) { + return MPXP_Unknown; } demuxer_driver_t demux_dv = { Modified: mplayerxp/libmpdemux/demux_film.c =================================================================== --- mplayerxp/libmpdemux/demux_film.c 2012-11-11 11:47:09 UTC (rev 326) +++ mplayerxp/libmpdemux/demux_film.c 2012-11-11 13:44:14 UTC (rev 327) @@ -8,7 +8,7 @@ Details of the FILM file format can be found at: http://www.pcisys.net/~melanson/codecs/ - + TODO: demuxer->movi_length */ @@ -183,16 +183,16 @@ return 1; } -static int film_probe(demuxer_t* demuxer) +static MPXP_Rc film_probe(demuxer_t* demuxer) { uint32_t chunk_type; // read the master chunk type chunk_type = le2me_32(stream_read_fourcc(demuxer->stream)); // validate the chunk type - if (chunk_type != CHUNK_FILM) return 0; + if (chunk_type != CHUNK_FILM) return MPXP_False; demuxer->file_format=DEMUXER_TYPE_FILM; - return 1; + return MPXP_Ok; } static demuxer_t* film_open(demuxer_t* demuxer) @@ -433,12 +433,12 @@ if(film_data->chunks) mp_free(film_data->chunks); mp_free(film_data); - + } -static int film_control(demuxer_t *demuxer,int cmd,any_t*args) +static MPXP_Rc film_control(demuxer_t *demuxer,int cmd,any_t*args) { - return DEMUX_UNKNOWN; + return MPXP_Unknown; } demuxer_driver_t demux_film = Modified: mplayerxp/libmpdemux/demux_fli.c =================================================================== --- mplayerxp/libmpdemux/demux_fli.c 2012-11-11 11:47:09 UTC (rev 326) +++ mplayerxp/libmpdemux/demux_fli.c 2012-11-11 13:44:14 UTC (rev 327) @@ -65,13 +65,13 @@ return 1; } -static int fli_probe(demuxer_t* demuxer){ +static MPXP_Rc fli_probe(demuxer_t* demuxer){ unsigned magic_number; demuxer->movi_end = stream_skip(demuxer->stream,4); - magic_number = stream_read_word_le(demuxer->stream); - if ((magic_number != 0xAF11) && (magic_number != 0xAF12)) return 0; + magic_number = stream_read_word_le(demuxer->stream); + if ((magic_number != 0xAF11) && (magic_number != 0xAF12)) return MPXP_False; demuxer->file_format=DEMUXER_TYPE_FLI; - return 1; + return MPXP_Ok; } static demuxer_t* fli_open(demuxer_t* demuxer){ @@ -191,9 +191,9 @@ mp_free(frames); } -static int fli_control(demuxer_t *demuxer,int cmd,any_t*args) +static MPXP_Rc fli_control(demuxer_t *demuxer,int cmd,any_t*args) { - return DEMUX_UNKNOWN; + return MPXP_Unknown; } demuxer_driver_t demux_fli = Modified: mplayerxp/libmpdemux/demux_lavf.c =================================================================== --- mplayerxp/libmpdemux/demux_lavf.c 2012-11-11 11:47:09 UTC (rev 326) +++ mplayerxp/libmpdemux/demux_lavf.c 2012-11-11 13:44:14 UTC (rev 327) @@ -170,7 +170,7 @@ *key++ = (char2int(str[0]) << 4) | char2int(str[1]); } -static int lavf_probe(demuxer_t *demuxer){ +static MPXP_Rc lavf_probe(demuxer_t *demuxer){ AVProbeData avpd; uint8_t buf[PROBE_BUF_SIZE]; lavf_priv_t *priv; @@ -184,7 +184,7 @@ if(stream_read(demuxer->stream, buf, PROBE_BUF_SIZE)!=PROBE_BUF_SIZE) { mp_free(demuxer->priv); - return 0; + return MPXP_False; } avpd.filename= "xxx"; avpd.buf= buf; @@ -193,26 +193,26 @@ if (opt_format) { if (strcmp(opt_format, "help") == 0) { list_formats(); - return 0; + return MPXP_False; } priv->avif= av_find_input_format(opt_format); if (!priv->avif) { MSG_FATAL("Unknown lavf format %s\n", opt_format); - return 0; + return MPXP_False; } MSG_INFO("Forced lavf %s demuxer\n", priv->avif->long_name); - return 1; + return MPXP_Ok; } priv->avif= av_probe_input_format(&avpd, 1); if(!priv->avif){ MSG_V("LAVF_check: file format not recognized!\n"); mp_free(demuxer->priv); - return 0; + return MPXP_False; }else MSG_V("LAVF_check: %s\n", priv->avif->long_name); demuxer->file_format=DEMUXER_TYPE_ASF; - return 1; + return MPXP_Ok; } extern const unsigned char ff_codec_bmp_tags[]; @@ -477,9 +477,9 @@ av_seek_frame(priv->avfc, -1, priv->last_pts + seeka->secs*AV_TIME_BASE, seeka->secs < 0 ? AVSEEK_FLAG_BACKWARD : 0); } -static int lavf_control(demuxer_t *demuxer, int cmd, any_t*arg) +static MPXP_Rc lavf_control(demuxer_t *demuxer, int cmd, any_t*arg) { - return DEMUX_UNKNOWN; + return MPXP_Unknown; } static void lavf_close(demuxer_t *demuxer) Modified: mplayerxp/libmpdemux/demux_mkv.c =================================================================== --- mplayerxp/libmpdemux/demux_mkv.c 2012-11-11 11:47:09 UTC (rev 326) +++ mplayerxp/libmpdemux/demux_mkv.c 2012-11-11 13:44:14 UTC (rev 327) @@ -2774,31 +2774,30 @@ static int demux_mkv_reverse_id(mkv_demuxer_t *d, int num, int type) { int i, id; - + for (i=0, id=0; i < d->num_tracks; i++) if (d->tracks[i] != NULL && d->tracks[i]->type == type) { if (d->tracks[i]->tnum == num) return id; id++; } - + return -1; } -static int mkv_probe(demuxer_t *demuxer) +static MPXP_Rc mkv_probe(demuxer_t *demuxer) { - stream_t *s = demuxer->stream; - int version; - char *str; - stream_seek(s, s->start_pos); - str = ebml_read_header (s, &version); - if (str == NULL || strcmp (str, "matroska") || version > 1) - { - MSG_DBG2( "[mkv] no head found\n"); - return 0; + stream_t *s = demuxer->stream; + int version; + char *str; + stream_seek(s, s->start_pos); + str = ebml_read_header (s, &version); + if (str == NULL || strcmp (str, "matroska") || version > 1) { + MSG_DBG2( "[mkv] no head found\n"); + return MPXP_False; } - mp_free (str); - return 1; + mp_free (str); + return MPXP_Ok; } static demuxer_t* mkv_open (demuxer_t *demuxer) @@ -2811,11 +2810,10 @@ stream_seek(s, s->start_pos); str = ebml_read_header (s, &version); - if (str == NULL || strcmp (str, "matroska") || version > 2) - { + if (str == NULL || strcmp (str, "matroska") || version > 2) { MSG_DBG2( "[mkv] no head found\n"); return 0; - } + } mp_free (str); MSG_V( "[mkv] Found the head...\n"); @@ -4007,50 +4005,38 @@ } } -static int mkv_control (demuxer_t *demuxer, int cmd, any_t*arg) +static MPXP_Rc mkv_control (demuxer_t *demuxer, int cmd, any_t*arg) { - mkv_demuxer_t *mkv_d = (mkv_demuxer_t *) demuxer->priv; - - switch (cmd) - { + mkv_demuxer_t *mkv_d = (mkv_demuxer_t *) demuxer->priv; + switch (cmd) { #if 0 - case DEMUXER_CTRL_GET_TIME_LENGTH: - if (mkv_d->duration == 0) - return DEMUX_UNKNOWN; + case DEMUXER_CTRL_GET_TIME_LENGTH: + if (mkv_d->duration == 0) return MPXP_Unknown; + *((double *)arg) = (double)mkv_d->duration; + return MPXP_Ok; - *((double *)arg) = (double)mkv_d->duration; - return DEMUX_OK; - - case DEMUXER_CTRL_GET_PERCENT_POS: - if (mkv_d->duration == 0) - { - return DEMUX_UNKNOWN; - } - - *((int *) arg) = (int) (100 * mkv_d->last_pts / mkv_d->duration); - return DEMUX_OK; + case DEMUXER_CTRL_GET_PERCENT_POS: + if (mkv_d->duration == 0) return MPXP_Unknown; + *((int *) arg) = (int) (100 * mkv_d->last_pts / mkv_d->duration); + return MPXP_Ok; #endif - case DEMUX_CMD_SWITCH_AUDIO: - if (demuxer->audio && demuxer->audio->sh) { - sh_audio_t *sh = demuxer->a_streams[demuxer->audio->id]; - int aid = *(int*)arg; - if (aid < 0) - aid = (sh->aid + 1) % mkv_d->last_aid; - if (aid != sh->aid) { - mkv_track_t *track = demux_mkv_find_track_by_num (mkv_d, aid, MATROSKA_TRACK_AUDIO); - if (track) { - demuxer->audio->id = track->tnum; - sh = demuxer->a_streams[demuxer->audio->id]; - ds_free_packs(demuxer->audio); - } - } - *(int*)arg = sh->aid; - } else - *(int*)arg = -2; - return DEMUX_OK; - - default: - return DEMUX_UNKNOWN; + case DEMUX_CMD_SWITCH_AUDIO: + if (demuxer->audio && demuxer->audio->sh) { + sh_audio_t *sh = demuxer->a_streams[demuxer->audio->id]; + int aid = *(int*)arg; + if (aid < 0) aid = (sh->aid + 1) % mkv_d->last_aid; + if (aid != sh->aid) { + mkv_track_t *track = demux_mkv_find_track_by_num (mkv_d, aid, MATROSKA_TRACK_AUDIO); + if (track) { + demuxer->audio->id = track->tnum; + sh = demuxer->a_streams[demuxer->audio->id]; + ds_free_packs(demuxer->audio); + } + } + *(int*)arg = sh->aid; + } else *(int*)arg = -2; + return MPXP_Ok; + default: return MPXP_Unknown; } } Modified: mplayerxp/libmpdemux/demux_mov.c =================================================================== --- mplayerxp/libmpdemux/demux_mov.c 2012-11-11 11:47:09 UTC (rev 326) +++ mplayerxp/libmpdemux/demux_mov.c 2012-11-11 13:44:14 UTC (rev 327) @@ -299,7 +299,7 @@ #define MOV_FOURCC(a,b,c,d) ((a<<24)|(b<<16)|(c<<8)|(d)) -static int mov_probe(demuxer_t* demuxer){ +static MPXP_Rc mov_probe(demuxer_t* demuxer){ int flags=0; int no=0; unsigned ver; @@ -346,43 +346,43 @@ switch(tmp) { case MOV_FOURCC('i','s','o','m'): MSG_V("MOV: File-Type Major-Brand: ISO Media File\n"); - break; + break; case MOV_FOURCC('m','p','4','1'): MSG_V("ISO: File Type Major Brand: ISO/IEC 14496-1 (MPEG-4 system) v1\n"); - break; + break; case MOV_FOURCC('m','p','4','2'): MSG_V("ISO: File Type Major Brand: ISO/IEC 14496-1 (MPEG-4 system) v2\n"); - break; + break; case MOV_FOURCC('M','4','A',' '): MSG_V("ISO: File Type Major Brand: Apple iTunes AAC-LC Audio\n"); - break; + break; case MOV_FOURCC('M','4','P',' '): MSG_V("ISO: File Type Major Brand: Apple iTunes AAC-LC Protected Audio\n"); - break; + break; case MOV_FOURCC('q','t',' ',' '): MSG_V("ISO: File Type Major Brand: Original QuickTime\n"); - break; + break; case MOV_FOURCC('3','g','p','1'): MSG_V("ISO: File Type Major Brand: 3GPP Profile 1\n"); - break; + break; case MOV_FOURCC('3','g','p','2'): case MOV_FOURCC('3','g','2','a'): MSG_V("ISO: File Type Major Brand: 3GPP Profile 2\n"); - break; + break; case MOV_FOURCC('3','g','p','3'): MSG_V("ISO: File Type Major Brand: 3GPP Profile 3\n"); - break; + break; case MOV_FOURCC('3','g','p','4'): MSG_V("ISO: File Type Major Brand: 3GPP Profile 4\n"); - break; + break; case MOV_FOURCC('3','g','p','5'): MSG_V("ISO: File Type Major Brand: 3GPP Profile 5\n"); - break; + break; case MOV_FOURCC('m','m','p','4'): MSG_V("ISO: File Type Major Brand: Mobile ISO/IEC 14496-1 (MPEG-4 system)\n"); - break; + break; default: - tmp = BE_32(tmp); + tmp = BE_32(tmp); MSG_WARN("MOV: File-Type unknown Major-Brand: %.4s\n",&tmp); } ver=stream_read_dword(demuxer->stream); @@ -394,7 +394,7 @@ MSG_V("MOV: File-Type Compatible-Brands #%d: %.4s\n",i,&tmp); skipped += 4; } -#endif +#endif } break; case MOV_FOURCC('m','o','o','v'): // case MOV_FOURCC('c','m','o','v'): @@ -470,7 +470,7 @@ // if we're over the headers, then we can stop parsing here! demuxer->priv=priv; demuxer->file_format=DEMUXER_TYPE_MOV; - return 1; + return MPXP_Ok; } break; case MOV_FOURCC('f','r','e','e'): @@ -484,7 +484,7 @@ /* dunno what, but we shoudl ignore it */ break; default: - if(no==0){ mp_free(priv); return 0;} // first chunk is bad! + if(no==0){ mp_free(priv); return MPXP_False;} // first chunk is bad! id = BE_32(id); MSG_V("MOV: unknown chunk: %.4s %d\n",&id,(int)len); } @@ -496,21 +496,21 @@ if(flags==3){ demuxer->priv=priv; demuxer->file_format=DEMUXER_TYPE_MOV; - return 1; + return MPXP_Ok; } mp_free(priv); if ((flags==5) || (flags==7)) // reference & header sent { demuxer->file_format=DEMUXER_TYPE_MOV; - return 1; + return MPXP_Ok; } if(flags==1) MSG_WARN("MOV: missing data (mdat) chunk! Maybe broken file...\n"); else if(flags==2) MSG_WARN("MOV: missing header (moov/cmov) chunk! Maybe broken file...\n"); - return 0; + return MPXP_False; } static unsigned short afourcc2wtag(uint32_t fourcc) @@ -2085,9 +2085,9 @@ mp_free(priv); } -static int mov_control(demuxer_t *demuxer,int cmd,any_t*args) +static MPXP_Rc mov_control(demuxer_t *demuxer,int cmd,any_t*args) { - return DEMUX_UNKNOWN; + return MPXP_Unknown; } demuxer_driver_t demux_mov = Modified: mplayerxp/libmpdemux/demux_mpg.c =================================================================== --- mplayerxp/libmpdemux/demux_mpg.c 2012-11-11 11:47:09 UTC (rev 326) +++ mplayerxp/libmpdemux/demux_mpg.c 2012-11-11 13:44:14 UTC (rev 327) @@ -89,11 +89,11 @@ unsigned char c, id, type; unsigned int plen, prog_len, es_map_len; mpg_demuxer_t *priv = (mpg_demuxer_t *) demux->priv; - + MSG_DBG2("PARSE_PSM, len=%d\n", len); if(! len) return 0; - + c = stream_read_char(demux->stream); if(! (c & 0x80)) { stream_skip(demux->stream, len - 1); //not yet valid, discard @@ -626,7 +626,7 @@ 0x000001FF - prog_stream_dir */ extern demuxer_driver_t demux_mpgps; -static int mpgps_probe(demuxer_t*demuxer) +static MPXP_Rc mpgps_probe(demuxer_t*demuxer) { uint32_t code,id; uint8_t d[4]; @@ -650,17 +650,16 @@ code=stream_read_dword_le(demuxer->stream); while((bswap_32(code) & 0xffffff00) != 0x100) code=stream_read_dword_le(demuxer->stream); } - else return 0; + else return MPXP_False; } - else return 0; + else return MPXP_False; } - else return 0; + else return MPXP_False; } code = bswap_32(code); /* test stream only if stream is started from 0000001XX */ - if ((code & 0xffffff00) == 0x100) - { + if ((code & 0xffffff00) == 0x100) { stream_seek(demuxer->stream,demuxer->stream->start_pos); memset(&mpg_stat,0,sizeof(struct mpg_stat_s)); @@ -722,37 +721,30 @@ if(mpg_stat.num_elementary_packets100>=2 && mpg_stat.num_elementary_packets101>=2 && abs(mpg_stat.num_elementary_packets101+8-mpg_stat.num_elementary_packets100)<16){ if(mpg_stat.num_elementary_packetsPES>=4 && mpg_stat.num_elementary_packetsPES>=mpg_stat.num_elementary_packets100-4){ - --pes;continue; /* tricky... */ + --pes; + continue; /* tricky... */ } demuxer->file_format=DEMUXER_TYPE_MPEG_ES; /* <-- hack is here :) */ demux_mpgps.name="MPG/ES (Elementary stream) parser"; - } else -#if 1 - /* fuzzy mpeg4-es detection. do NOT enable without heavy testing of mpeg formats detection! */ - if(mpg_stat.num_elementary_packets1B6>3 && mpg_stat.num_elementary_packets12x>=1 && + } else if(mpg_stat.num_elementary_packets1B6>3 && mpg_stat.num_elementary_packets12x>=1 && mpg_stat.num_elementary_packetsPES==0 && mpg_stat.num_elementary_packets100<=mpg_stat.num_elementary_packets12x && - demuxer->synced<2){ + demuxer->synced<2) { + /* fuzzy mpeg4-es detection. do NOT enable without heavy testing of mpeg formats detection! */ demuxer->file_format=DEMUXER_TYPE_MPEG4_ES; demux_mpgps.name="MPG/MPEG4-ES (MPEG-4 Elementary stream) parser"; - } else -#endif -#if 1 - /* fuzzy h264-es detection. do NOT enable without heavy testing of mpeg formats detection!*/ - if((mpg_stat.num_h264_slice>3 || (mpg_stat.num_h264_dpa>3 && mpg_stat.num_h264_dpb>3 && mpg_stat.num_h264_dpc>3)) && + } else if((mpg_stat.num_h264_slice>3 || (mpg_stat.num_h264_dpa>3 && mpg_stat.num_h264_dpb>3 && mpg_stat.num_h264_dpc>3)) && /* FIXME mpg_stat.num_h264_sps>=1 && */ mpg_stat.num_h264_pps>=1 && mpg_stat.num_h264_idr>=1 && mpg_stat.num_elementary_packets1B6==0 && mpg_stat.num_elementary_packetsPES==0 && - demuxer->synced<2){ + demuxer->synced<2) { + /* fuzzy h264-es detection. do NOT enable without heavy testing of mpeg formats detection!*/ demuxer->file_format=DEMUXER_TYPE_H264_ES; demux_mpgps.name="MPG/H264-ES (H264 Elementary stream) parser"; - } else -#endif - { + } else { if(demuxer->synced==2) MSG_ERR("MPEG: " MSGTR_MissingVideoStreamBug); - else - { + else { MSG_V("Not MPEG System Stream format...\n"); - return 0; + return MPXP_False; } } } @@ -761,32 +753,29 @@ if( demuxer->file_format==DEMUXER_TYPE_MPEG_ES || demuxer->file_format==DEMUXER_TYPE_MPEG4_ES || demuxer->file_format==DEMUXER_TYPE_H264_ES){ /* little hack, see above! */ - demux_mpgps.demux=mpges_demux; - if(!demuxer->v_streams[0]) new_sh_video(demuxer,0); - if(demuxer->video->id==-1) demuxer->video->id=0; - demuxer->video->sh=demuxer->v_streams[0]; - stream_seek(demuxer->stream,demuxer->stream->start_pos); - return mpges_demux(demuxer,demuxer->video); - } - else - { - /* - NK: Main hack is here !!! - We have something packetized - means both audio and video should be present! - But some streams are "badly" interleaved. - Since mpgps_demux() reads stream until first audio or video packet only - - we need force stream reading several times at least. - */ + demux_mpgps.demux=mpges_demux; + if(!demuxer->v_streams[0]) new_sh_video(demuxer,0); + if(demuxer->video->id==-1) demuxer->video->id=0; + demuxer->video->sh=demuxer->v_streams[0]; + stream_seek(demuxer->stream,demuxer->stream->start_pos); + return mpges_demux(demuxer,demuxer->video)?MPXP_Ok:MPXP_False; + } else { + /* + NK: Main hack is here !!! + We have something packetized - means both audio and video should be present! + But some streams are "badly" interleaved. + Since mpgps_demux() reads stream until first audio or video packet only + - we need force stream reading several times at least. + */ unsigned attempts=64; - while((!demuxer->video->sh || !demuxer->audio->sh) && attempts) - { + while((!demuxer->video->sh || !demuxer->audio->sh) && attempts) { mpgps_demux(demuxer,demuxer->video); /* try it again */ attempts--; } - return 1; + return MPXP_Ok; } } - return 0; + return MPXP_False; } static demuxer_t* mpgps_open(demuxer_t*demuxer) @@ -816,49 +805,46 @@ static void mpgps_close(demuxer_t*demuxer) { - mpg_demuxer_t* mpg_d = demuxer->priv; - if (mpg_d) mp_free(mpg_d); + mpg_demuxer_t* mpg_d = demuxer->priv; + if (mpg_d) mp_free(mpg_d); } -static int mpgps_control(demuxer_t *demuxer,int cmd,any_t*arg) +static MPXP_Rc mpgps_control(demuxer_t *demuxer,int cmd,any_t*arg) { mpg_demuxer_t *mpg_d=(mpg_demuxer_t*)demuxer->priv; - switch(cmd) - { + switch(cmd) { case DEMUX_CMD_SWITCH_AUDIO: - if (mpg_d && mpg_d->num_a_streams > 1 && demuxer->audio && demuxer->audio->sh) { - demux_stream_t *d_audio = demuxer->audio; - sh_audio_t *sh_audio = d_audio->sh; - sh_audio_t *sh_a=NULL; - int i; - if (*((int*)arg) < 0) - { - for (i = 0; i < mpg_d->num_a_streams; i++) { - if (d_audio->id == mpg_d->a_stream_ids[i]) break; - } - do { - i = (i+1) % mpg_d->num_a_streams; - sh_a = (sh_audio_t*)demuxer->a_streams[mpg_d->a_stream_ids[i]]; - } while (sh_a->wtag != sh_audio->wtag); - } - else { - for (i = 0; i < mpg_d->num_a_streams; i++) - if (*((int*)arg) == mpg_d->a_stream_ids[i]) break; - if (i < mpg_d->num_a_streams) - sh_a = (sh_audio_t*)demuxer->a_streams[*((int*)arg)]; - if (sh_a->wtag != sh_audio->wtag) - i = mpg_d->num_a_streams; - } - if (i < mpg_d->num_a_streams && d_audio->id != mpg_d->a_stream_ids[i]) { - d_audio->id = mpg_d->a_stream_ids[i]; - d_audio->sh = sh_a; - ds_free_packs(d_audio); - } - } - *((int*)arg) = demuxer->audio->id; - return DEMUX_OK; + if (mpg_d && mpg_d->num_a_streams > 1 && demuxer->audio && demuxer->audio->sh) { + demux_stream_t *d_audio = demuxer->audio; + sh_audio_t *sh_audio = d_audio->sh; + sh_audio_t *sh_a=NULL; + int i; + if (*((int*)arg) < 0) { + for (i = 0; i < mpg_d->num_a_streams; i++) { + if (d_audio->id == mpg_d->a_stream_ids[i]) break; + } + do { + i = (i+1) % mpg_d->num_a_streams; + sh_a = (sh_audio_t*)demuxer->a_streams[mpg_d->a_stream_ids[i]]; + } while (sh_a->wtag != sh_audio->wtag); + } else { + for (i = 0; i < mpg_d->num_a_streams; i++) + if (*((int*)arg) == mpg_d->a_stream_ids[i]) break; + if (i < mpg_d->num_a_streams) + sh_a = (sh_audio_t*)demuxer->a_streams[*((int*)arg)]; + if (sh_a->wtag != sh_audio->wtag) + i = mpg_d->num_a_streams; + } + if (i < mpg_d->num_a_streams && d_audio->id != mpg_d->a_stream_ids[i]) { + d_audio->id = mpg_d->a_stream_ids[i]; + d_audio->sh = sh_a; + ds_free_packs(d_audio); + } + } + *((int*)arg) = demuxer->audio->id; + return MPXP_Ok; } - return DEMUX_UNKNOWN; + return MPXP_Unknown; } demuxer_driver_t demux_mpgps = Modified: mplayerxp/libmpdemux/demux_mpxp64.c =================================================================== --- mplayerxp/libmpdemux/demux_mpxp64.c 2012-11-11 11:47:09 UTC (rev 326) +++ mplayerxp/libmpdemux/demux_mpxp64.c 2012-11-11 13:44:14 UTC (rev 327) @@ -464,7 +464,7 @@ id=stream_read_qword_le(s); if(memcmp(&id,"HEADER64",8)!=0) return NULL; hsize=stream_read_qword_le(s); /* header size */ - + // priv struct: priv=mp_mallocz(sizeof(mpxpav64_priv_t)); demuxer->priv=(any_t*)priv; @@ -858,7 +858,7 @@ } } -static int mpxpav64_probe(demuxer_t *demuxer) +static MPXP_Rc mpxpav64_probe(demuxer_t *demuxer) { uint64_t id1,id2,id3; uint32_t id4; @@ -875,8 +875,8 @@ if(memcmp(&id1,"MPXPAV64",8)==0 && memcmp(&id2,"HEADER64",8)==0 && memcmp(&id3,"AVDATA64",8)==0 && - memcmp(&id4,"SEEK",4)==0) return 1; - return 0; + memcmp(&id4,"SEEK",4)==0) return MPXP_Ok; + return MPXP_False; } static void mpxpav64_close(demuxer_t *demuxer) @@ -888,9 +888,9 @@ mp_free(priv); } -static int mpxpav64_control(demuxer_t *demuxer,int cmd,any_t*args) +static MPXP_Rc mpxpav64_control(demuxer_t *demuxer,int cmd,any_t*args) { - return DEMUX_UNKNOWN; + return MPXP_Unknown; } demuxer_driver_t demux_mpxpav64 = Modified: mplayerxp/libmpdemux/demux_nsv.c =================================================================== --- mplayerxp/libmpdemux/demux_nsv.c 2012-11-11 11:47:09 UTC (rev 326) +++ mplayerxp/libmpdemux/demux_nsv.c 2012-11-11 13:44:14 UTC (rev 327) @@ -311,7 +311,7 @@ return demuxer; } -static int nsv_probe ( demuxer_t* demuxer ) +static MPXP_Rc nsv_probe ( demuxer_t* demuxer ) { unsigned int id; @@ -319,17 +319,16 @@ // off_t orig_pos = stream_tell(demuxer->stream); MSG_V("Checking for Nullsoft Streaming Video\n" ); - + //---- check NSVx header: id=stream_read_dword_le(demuxer->stream); if(id!=mmioFOURCC('N','S','V','f') && id!=mmioFOURCC('N','S','V','s')) - return 0; // not an NSV file - + return MPXP_False; // not an NSV file + stream_reset(demuxer->stream); // clear EOF stream_seek(demuxer->stream,demuxer->stream->start_pos); - - return 1; + return MPXP_Ok; } static void nsv_close(demuxer_t* demuxer) { @@ -341,9 +340,9 @@ } -static int nsv_control(demuxer_t *demuxer,int cmd,any_t*args) +static MPXP_Rc nsv_control(demuxer_t *demuxer,int cmd,any_t*args) { - return DEMUX_UNKNOWN; + return MPXP_Unknown; } demuxer_driver_t demux_nsv = Modified: mplayerxp/libmpdemux/demux_null.c =================================================================== --- mplayerxp/libmpdemux/demux_null.c 2012-11-11 11:47:09 UTC (rev 326) +++ mplayerxp/libmpdemux/demux_null.c 2012-11-11 13:44:14 UTC (rev 327) @@ -17,9 +17,9 @@ { NULL,NULL, 0, 0, 0, 0, NULL} }; -static int null_probe(demuxer_t* demuxer) +static MPXP_Rc null_probe(demuxer_t* demuxer) { - return 0; + return MPXP_False; } static demuxer_t* null_open(demuxer_t* demuxer) { @@ -35,9 +35,9 @@ static void null_close(demuxer_t* demuxer) {} -static int null_control(demuxer_t *demuxer,int cmd,any_t*args) +static MPXP_Rc null_control(demuxer_t *demuxer,int cmd,any_t*args) { - return DEMUX_UNKNOWN; + return MPXP_Unknown; } demuxer_driver_t demux_null = Modified: mplayerxp/libmpdemux/demux_nuv.c =================================================================== --- mplayerxp/libmpdemux/demux_nuv.c 2012-11-11 11:47:09 UTC (rev 326) +++ mplayerxp/libmpdemux/demux_nuv.c 2012-11-11 13:44:14 UTC (rev 327) @@ -72,7 +72,7 @@ while(current_time < target_time ) { - if ((unsigned)stream_read ( demuxer->stream, (char*)& rtjpeg_frameheader, sizeof ( rtjpeg_frameheader ) ) < sizeof(rtjpeg_frameheader)) + if ((unsigned)stream_read ( demuxer->stream, (char*)& rtjpeg_frameheader, sizeof ( rtjpeg_frameheader ) ) < sizeof(rtjpeg_frameheader)) return; /* EOF */ le2me_rtframeheader(&rtjpeg_frameheader); @@ -287,26 +287,26 @@ return demuxer; } -static int nuv_probe ( demuxer_t* demuxer ) +static MPXP_Rc nuv_probe ( demuxer_t* demuxer ) { - struct nuv_signature ns; + struct nuv_signature ns; - /* Store original position */ - off_t orig_pos = stream_tell(demuxer->stream); + /* Store original position */ + off_t orig_pos = stream_tell(demuxer->stream); - MSG_V( "Checking for NuppelVideo\n" ); + MSG_V( "Checking for NuppelVideo\n" ); - stream_read(demuxer->stream,(char*)&ns,sizeof(ns)); + stream_read(demuxer->stream,(char*)&ns,sizeof(ns)); - if ( strncmp ( ns.finfo, "NuppelVideo", 12 ) ) - return 0; /* Not a NuppelVideo file */ - if ( strncmp ( ns.version, "0.05", 5 ) ) - return 0; /* Wrong version NuppelVideo file */ + if ( strncmp ( ns.finfo, "NuppelVideo", 12 ) ) + return MPXP_False; /* Not a NuppelVideo file */ + if ( strncmp ( ns.version, "0.05", 5 ) ) + return MPXP_False; /* Wrong version NuppelVideo file */ - /* Return to original position */ - stream_seek ( demuxer->stream, orig_pos ); - demuxer->file_format=DEMUXER_TYPE_NUV; - return 1; + /* Return to original position */ + stream_seek ( demuxer->stream, orig_pos ); + demuxer->file_format=DEMUXER_TYPE_NUV; + return MPXP_Ok; } static void nuv_close(demuxer_t* demuxer) { @@ -322,9 +322,9 @@ mp_free(priv); } -static int nuv_control(demuxer_t *demuxer,int cmd,any_t*args) +static MPXP_Rc nuv_control(demuxer_t *demuxer,int cmd,any_t*args) { - return DEMUX_UNKNOWN; + return MPXP_Unknown; } demuxer_driver_t demux_nuv = Modified: mplayerxp/libmpdemux/demux_ogg.c =================================================================== --- mplayerxp/libmpdemux/demux_ogg.c 2012-11-11 11:47:09 UTC (rev 326) +++ mplayerxp/libmpdemux/demux_ogg.c 2012-11-11 13:44:14 UTC (rev 327) @@ -159,14 +159,14 @@ static float clear_sub; //FILE* subout; -static int ogg_probe(demuxer_t *demuxer) +static MPXP_Rc ogg_probe(demuxer_t *demuxer) { uint32_t fcc; fcc=me2be_32(stream_read_dword(demuxer->stream)); - if(fcc != mmioFOURCC('O','g','g','S')) return 0; + if(fcc != mmioFOURCC('O','g','g','S')) return MPXP_False; demuxer->file_format=DEMUXER_TYPE_OGG; stream_seek(demuxer->stream,0); - return 1; + return MPXP_Ok; } @@ -1457,9 +1457,9 @@ mp_free(ogg_d); } -static int ogg_control(demuxer_t *demuxer,int cmd,any_t*args) +static MPXP_Rc ogg_control(demuxer_t *demuxer,int cmd,any_t*args) { - return DEMUX_UNKNOWN; + return MPXP_Unknown; } demuxer_driver_t demux_ogg = Modified: mplayerxp/libmpdemux/demux_pva.c =================================================================== --- mplayerxp/libmpdemux/demux_pva.c 2012-11-11 11:47:09 UTC (rev 326) +++ mplayerxp/libmpdemux/demux_pva.c 2012-11-11 13:44:14 UTC (rev 327) @@ -3,9 +3,9 @@ * like the Hauppauge WinTV DVBs, for MPlayer. * * Uses info from the PVA file specifications found at - * + * * http://www.technotrend.de/download/av_format_v1.pdf - * + * * WARNING: Quite a hack was required in order to get files by MultiDec played back correctly. * If it breaks anything else, just comment out the "#define DEMUX_PVA_MULTIDEC_HACK" below * and it will not be compiled in. @@ -108,22 +108,19 @@ } } -static int pva_probe(demuxer_t * demuxer) +static MPXP_Rc pva_probe(demuxer_t * demuxer) { - uint8_t buffer[5]={0,0,0,0,0}; - MSG_V("Checking for PVA\n"); - stream_read(demuxer->stream,buffer,5); - if(buffer[0]=='A' && buffer[1] == 'V' && buffer[4] == 0x55) - { - MSG_DBG2("Success: PVA\n"); - demuxer->file_format=DEMUXER_TYPE_PVA; - return 1; - } - else - { - MSG_DBG2("Failed: PVA\n"); - return 0; - } + uint8_t buffer[5]={0,0,0,0,0}; + MSG_V("Checking for PVA\n"); + stream_read(demuxer->stream,buffer,5); + if(buffer[0]=='A' && buffer[1] == 'V' && buffer[4] == 0x55) { + MSG_DBG2("Success: PVA\n"); + demuxer->file_format=DEMUXER_TYPE_PVA; + return MPXP_Ok; + } else { + MSG_DBG2("Failed: PVA\n"); + return MPXP_False; + } } static demuxer_t* pva_open (demuxer_t * demuxer) @@ -486,41 +483,40 @@ * the overhead caused by PVA and PES headers. * If the calculated SOF offset is negative, seek to the beginning of the file. */ - + dest_offset=(seeka->flags&DEMUX_SEEK_SET?demuxer->movi_start:stream_tell(demuxer->stream))+seeka->secs*total_bitrate; if(dest_offset<0) dest_offset=0; - + stream_seek(demuxer->stream,dest_offset); if(!pva_sync(demuxer)) { MSG_V("demux_pva: Couldn't seek!\n"); return ; } - + /* * Reset the PTS info inside the pva_priv_t structure. This way we don't deliver * data with the wrong PTSs (the ones we had before seeking). * */ - + priv->last_video_pts=-1; priv->last_audio_pts=-1; - + } static void pva_close(demuxer_t * demuxer) { - if(demuxer->priv) - { - mp_free(demuxer->priv); - demuxer->priv=NULL; - } + if(demuxer->priv) { + mp_free(demuxer->priv); + demuxer->priv=NULL; + } } -static int pva_control(demuxer_t *demuxer,int cmd,any_t*args) +static MPXP_Rc pva_control(demuxer_t *demuxer,int cmd,any_t*args) { - return DEMUX_UNKNOWN; + return MPXP_Unknown; } - + demuxer_driver_t demux_pva = { "PVA (for DVB boards) parser", Modified: mplayerxp/libmpdemux/demux_ra.c =================================================================== --- mplayerxp/libmpdemux/demux_ra.c 2012-11-11 11:47:09 UTC (rev 326) +++ mplayerxp/libmpdemux/demux_ra.c 2012-11-11 13:44:14 UTC (rev 327) @@ -44,15 +44,15 @@ -static int ra_probe(demuxer_t* demuxer) +static MPXP_Rc ra_probe(demuxer_t* demuxer) { - unsigned int chunk_id; - - chunk_id = stream_read_dword_le(demuxer->stream); - if (chunk_id == FOURCC_DOTRA) - return 1; - else - return 0; + unsigned int chunk_id; + + chunk_id = stream_read_dword_le(demuxer->stream); + if (chunk_id == FOURCC_DOTRA) + return MPXP_Ok; + else + return MPXP_False; } @@ -276,12 +276,10 @@ static void ra_close(demuxer_t *demuxer) { - ra_priv_t* ra_priv = demuxer->priv; - - if (ra_priv) - mp_free(ra_priv); - - return; + ra_priv_t* ra_priv = demuxer->priv; + if (ra_priv) + mp_free(ra_priv); + return; } @@ -301,9 +299,9 @@ } #endif -static int ra_control(demuxer_t *demuxer,int cmd,any_t*args) +static MPXP_Rc ra_control(demuxer_t *demuxer,int cmd,any_t*args) { - return DEMUX_UNKNOWN; + return MPXP_Unknown; } demuxer_driver_t demux_ra = Modified: mplayerxp/libmpdemux/demux_rawaudio.c =================================================================== --- mplayerxp/libmpdemux/demux_rawaudio.c 2012-11-11 11:47:09 UTC (rev 326) +++ mplayerxp/libmpdemux/demux_rawaudio.c 2012-11-11 13:44:14 UTC (rev 327) @@ -32,14 +32,13 @@ { NULL,NULL, 0, 0, 0, 0, NULL} }; -static int rawaudio_probe(demuxer_t* demuxer) +static MPXP_Rc rawaudio_probe(demuxer_t* demuxer) { - if(demuxer->stream->type & STREAMTYPE_RAWAUDIO || use_rawaudio) - { - demuxer->file_format=DEMUXER_TYPE_RAWAUDIO; - return 1; - } - return 0; + if(demuxer->stream->type & STREAMTYPE_RAWAUDIO || use_rawaudio) { + demuxer->file_format=DEMUXER_TYPE_RAWAUDIO; + return MPXP_Ok; + } + return MPXP_False; } static demuxer_t* rawaudio_open(demuxer_t* demuxer) { @@ -109,9 +108,9 @@ static void rawaudio_close(demuxer_t* demuxer) {} -static int rawaudio_control(demuxer_t *demuxer,int cmd,any_t*args) +static MPXP_Rc rawaudio_control(demuxer_t *demuxer,int cmd,any_t*args) { - return DEMUX_UNKNOWN; + return MPXP_Unknown; } demuxer_driver_t demux_rawaudio = Modified: mplayerxp/libmpdemux/demux_rawvideo.c =================================================================== --- mplayerxp/libmpdemux/demux_rawvideo.c 2012-11-11 11:47:09 UTC (rev 326) +++ mplayerxp/libmpdemux/demux_rawvideo.c 2012-11-11 13:44:14 UTC (rev 327) @@ -56,14 +56,14 @@ { NULL,NULL, 0, 0, 0, 0, NULL} }; -static int rawvideo_probe(demuxer_t* demuxer) +static MPXP_Rc rawvideo_probe(demuxer_t* demuxer) { - if(demuxer->stream->type & STREAMTYPE_RAWVIDEO || priv.use_rawvideo) { - priv.fps=25; - demuxer->file_format=DEMUXER_TYPE_RAWVIDEO; - return 1; - } - return 0; + if(demuxer->stream->type & STREAMTYPE_RAWVIDEO || priv.use_rawvideo) { + priv.fps=25; + demuxer->file_format=DEMUXER_TYPE_RAWVIDEO; + return MPXP_Ok; + } + return MPXP_False; } static demuxer_t* rawvideo_open(demuxer_t* demuxer) { @@ -142,9 +142,9 @@ static void rawvideo_close(demuxer_t *demuxer) { } -static int rawvideo_control(demuxer_t *demuxer,int cmd,any_t*args) +static MPXP_Rc rawvideo_control(demuxer_t *demuxer,int cmd,any_t*args) { - return DEMUX_UNKNOWN; + return MPXP_Unknown; } demuxer_driver_t demux_rawvideo = Modified: mplayerxp/libmpdemux/demux_real.c =================================================================== --- mplayerxp/libmpdemux/demux_real.c 2012-11-11 11:47:09 UTC (rev 326) +++ mplayerxp/libmpdemux/demux_real.c 2012-11-11 13:44:14 UTC (rev 327) @@ -1,7 +1,7 @@ /* Real parser & demuxer - + (C) Alex Beregszaszi <al...@na...> - + Based on FFmpeg's libav/rm.c. Audio codecs: (supported by RealPlayer8 for Linux) @@ -311,23 +311,23 @@ return 0; } -static int real_probe(demuxer_t* demuxer) +static MPXP_Rc real_probe(demuxer_t* demuxer) { real_priv_t *priv; int c; MSG_V("Checking for REAL\n"); - + c = stream_read_dword_le(demuxer->stream); if (c == -256) - return 0; /* EOF */ + return MPXP_False; /* EOF */ if (c != MKTAG('.', 'R', 'M', 'F')) - return 0; /* bad magic */ + return MPXP_False; /* bad magic */ priv = mp_mallocz(sizeof(real_priv_t)); demuxer->priv = priv; demuxer->file_format=DEMUXER_TYPE_REAL; - return 1; + return MPXP_Ok; } void hexdump(char *, unsigned long); @@ -1590,9 +1590,9 @@ return; } -static int real_control(demuxer_t *demuxer,int cmd,any_t*args) +static MPXP_Rc real_control(demuxer_t *demuxer,int cmd,any_t*args) { - return DEMUX_UNKNOWN; + return MPXP_Unknown; } demuxer_driver_t demux_real = Modified: mplayerxp/libmpdemux/demux_roq.c =================================================================== --- mplayerxp/libmpdemux/demux_roq.c 2012-11-11 11:47:09 UTC (rev 326) +++ mplayerxp/libmpdemux/demux_roq.c 2012-11-11 13:44:14 UTC (rev 327) @@ -52,19 +52,16 @@ // Check if a stream qualifies as a RoQ file based on the magic numbers // at the start of the file: // 84 10 FF FF FF FF xx xx -static int roq_probe(demuxer_t *demuxer) +static MPXP_Rc roq_probe(demuxer_t *demuxer) { - stream_reset(demuxer->stream); - stream_seek(demuxer->stream, demuxer->stream->start_pos); + stream_reset(demuxer->stream); + stream_seek(demuxer->stream, demuxer->stream->start_pos); - if ((stream_read_dword(demuxer->stream) == 0x8410FFFF) && - ((stream_read_dword(demu... [truncated message content] |