Index: libmpcodecs/vf_screenshot.c =================================================================== --- libmpcodecs/vf_screenshot.c (revision 24811) +++ libmpcodecs/vf_screenshot.c (working copy) @@ -12,6 +12,8 @@ #include #include +#include "osdep/timer.h" + #include "mp_msg.h" #include "img_format.h" @@ -29,12 +31,15 @@ struct vf_priv_s { int frameno; - char fname[102]; + char fname[512+102]; /// shot stores current screenshot mode: /// 0: don't take screenshots /// 1: take single screenshot, reset to 0 afterwards /// 2: take screenshots of each frame int shot, store_slices; + unsigned int lastShotTime; + unsigned int shotEveryMS; + char dname[512]; int dw, dh, stride; uint8_t *buffer; struct SwsContext *ctx; @@ -88,6 +93,8 @@ fwrite(priv->outbuffer, size, 1, fp); fclose (fp); + + mp_msg(MSGT_VFILTER,MSGL_INFO,"*** screenshot '%s' ***\n",fname); } static int fexists(char *fname) @@ -100,14 +107,14 @@ static void gen_fname(struct vf_priv_s* priv) { do { - snprintf (priv->fname, 100, "shot%04d.png", ++priv->frameno); + snprintf (priv->fname, 612, "%sshot%04d.png",priv->dname, ++priv->frameno); } while (fexists(priv->fname) && priv->frameno < 100000); if (fexists(priv->fname)) { priv->fname[0] = '\0'; return; } - mp_msg(MSGT_VFILTER,MSGL_INFO,"*** screenshot '%s' ***\n",priv->fname); + //mp_msg(MSGT_VFILTER,MSGL_INFO,"*** screenshot '%s' ***\n",priv->fname); } @@ -195,6 +202,13 @@ dmpi->height=mpi->height; } + + unsigned int currentTime = GetTimerMS(); + if(currentTime - vf->priv->lastShotTime > vf->priv->shotEveryMS) { + vf->priv->shot = 1; + vf->priv->lastShotTime = currentTime; + } + if(vf->priv->shot) { if (vf->priv->shot==1) vf->priv->shot=0; @@ -279,6 +293,17 @@ vf->priv->buffer=0; vf->priv->outbuffer=0; vf->priv->ctx=0; + + vf->priv->shotEveryMS=1000; + vf->priv->dname[0]=NULL; + + if(args) sscanf(args, "%u:%s", + &vf->priv->shotEveryMS, + vf->priv->dname); + mp_msg(MSGT_VFILTER,MSGL_V,"Screenshot params: max 1 every %d ms output to %s (-1=no scaling)\n", + vf->priv->shotEveryMS, + vf->priv->dname); + vf->priv->avctx = avcodec_alloc_context(); avcodec_register_all(); if (avcodec_open(vf->priv->avctx, avcodec_find_encoder(CODEC_ID_PNG))) { Index: libmpcodecs/vd.c =================================================================== --- libmpcodecs/vd.c (revision 24811) +++ libmpcodecs/vd.c (working copy) @@ -56,6 +56,8 @@ #ifdef USE_LIBAVCODEC &mpcodecs_vd_ffmpeg, #endif + +#ifndef TRIMDOWN #ifdef HAVE_OGGTHEORA &mpcodecs_vd_theora, #endif @@ -99,6 +101,7 @@ #if defined(USE_QTX_CODECS) || defined(MACOSX) &mpcodecs_vd_qtvideo, #endif +#endif NULL }; Index: libmpcodecs/ad.c =================================================================== --- libmpcodecs/ad.c (revision 24811) +++ libmpcodecs/ad.c (working copy) @@ -45,6 +45,10 @@ ad_functions_t* mpcodecs_ad_drivers[] = { +#ifdef USE_LIBAVCODEC + &mpcodecs_ad_ffmpeg, +#endif +#ifndef TRIMDOWN // &mpcodecs_ad_null, #ifdef USE_MP3LIB &mpcodecs_ad_mp3lib, @@ -54,9 +58,6 @@ &mpcodecs_ad_hwac3, #endif &mpcodecs_ad_hwmpa, -#ifdef USE_LIBAVCODEC - &mpcodecs_ad_ffmpeg, -#endif &mpcodecs_ad_pcm, &mpcodecs_ad_dvdpcm, &mpcodecs_ad_alaw, @@ -97,5 +98,6 @@ #ifdef USE_LIBDCA &mpcodecs_ad_libdca, #endif +#endif NULL }; Index: libmpcodecs/Makefile =================================================================== --- libmpcodecs/Makefile (revision 24811) +++ libmpcodecs/Makefile (working copy) @@ -3,13 +3,21 @@ LIBNAME_COMMON = libmpcodecs.a LIBNAME_MENCODER = libmpencoders.a -SRCS_COMMON = native/nuppelvideo.c \ +SRCS_COMMON = img_format.c \ + dec_audio.c \ + ad.c \ + dec_video.c \ + vd.c \ + vf.c \ + vd_null.c \ + vf_scale.c \ + vf_vo.c \ + +SRCS_COMMON-$(NO_TRIMDOWN) = native/nuppelvideo.c \ native/RTjpegN.c \ native/xa_gsm.c \ img_format.c \ mp_image.c \ - dec_audio.c \ - ad.c \ ad_alaw.c \ ad_dk3adpcm.c \ ad_dvdpcm.c \ @@ -19,17 +27,13 @@ ad_msadpcm.c \ ad_msgsm.c \ ad_pcm.c \ - dec_video.c \ - vd.c \ vd_hmblck.c \ vd_lzo.c \ vd_mpegpes.c \ vd_mtga.c \ - vd_null.c \ vd_nuv.c \ vd_raw.c \ vd_sgi.c \ - vf.c \ pullup.c \ vf_1bpp.c \ vf_2xsai.c \ @@ -77,7 +81,6 @@ vf_rgbtest.c \ vf_rotate.c \ vf_sab.c \ - vf_scale.c \ vf_smartblur.c \ vf_softpulldown.c \ vf_softskip.c \ @@ -88,7 +91,6 @@ vf_tile.c \ vf_tinterlace.c \ vf_unsharp.c \ - vf_vo.c \ vf_yadif.c \ vf_yuvcsp.c \ vf_yuy2.c \ Index: libmpcodecs/vf.c =================================================================== --- libmpcodecs/vf.c (revision 24811) +++ libmpcodecs/vf.c (working copy) @@ -102,6 +102,10 @@ // list of available filters: static vf_info_t* filter_list[]={ + &vf_info_scale, + &vf_info_vo, + +#ifndef TRIMDOWN &vf_info_rectangle, #ifdef HAVE_POSIX_SELECT &vf_info_bmovl, @@ -111,9 +115,7 @@ #ifdef USE_LIBPOSTPROC &vf_info_pp, #endif - &vf_info_scale, // &vf_info_osd, - &vf_info_vo, &vf_info_format, &vf_info_noformat, &vf_info_yuy2, @@ -192,7 +194,8 @@ #endif &vf_info_yadif, &vf_info_blackframe, - &vf_info_ow, + &vf_info_ow, +#endif NULL }; Index: stream/http.c =================================================================== --- stream/http.c (revision 24811) +++ stream/http.c (working copy) @@ -731,6 +731,7 @@ do { + //mp_msg(MSGT_NETWORK,MSGL_V,"Checking for seekability...\n"); redirect = 0; if (fd > 0) closesocket(fd); fd = http_send_request( url, 0 ); @@ -748,11 +749,15 @@ http_debug_hdr( http_hdr ); } + //mp_msg(MSGT_NETWORK,MSGL_V,"Checking for Accept-Ranges...\n"); // Check if we can make partial content requests and thus seek in http-streams if( http_hdr!=NULL && http_hdr->status_code==200 ) { char *accept_ranges; if( (accept_ranges = http_get_field(http_hdr,"Accept-Ranges")) != NULL ) + //mp_msg(MSGT_NETWORK,MSGL_V,"accept_ranges=%s\n", accept_ranges); seekable = strncmp(accept_ranges,"bytes",5)==0; + + //mp_msg(MSGT_NETWORK,MSGL_V,"Seekable(Accept-Ranges) : %d\n", seekable); } // Check if the response is an ICY status_code reason_phrase @@ -811,14 +816,21 @@ if( content_type!=NULL ) { char *content_length = NULL; mp_msg(MSGT_NETWORK,MSGL_V,"Content-Type: [%s]\n", content_type ); - if( (content_length = http_get_field(http_hdr, "Content-Length")) != NULL) + if( (content_length = http_get_field(http_hdr, "Content-Length")) != NULL) { mp_msg(MSGT_NETWORK,MSGL_V,"Content-Length: [%s]\n", http_get_field(http_hdr, "Content-Length")); + if(stream->end_pos == 0) { + sscanf(content_length , "%d", &(stream->end_pos)); + } + sscanf(content_length , "%d", &(stream->streaming_ctrl->length)); + stream->streaming_ctrl->pos = 0; + } // Check in the mime type table for a demuxer type i = 0; while(mime_type_table[i].mime_type != NULL) { if( !strcasecmp( content_type, mime_type_table[i].mime_type ) ) { *file_format = mime_type_table[i].demuxer_type; res = seekable; + //mp_msg(MSGT_NETWORK,MSGL_V,"res : %d\n", res); goto out; } i++; Index: stream/cache2.c =================================================================== --- stream/cache2.c (revision 24811) +++ stream/cache2.c (working copy) @@ -286,18 +286,21 @@ stream->cache_pid = CreateThread(NULL,0,ThreadProc,s,0,&threadId); #endif // wait until cache is filled at least prefill_init % - mp_msg(MSGT_CACHE,MSGL_V,"CACHE_PRE_INIT: %"PRId64" [%"PRId64"] %"PRId64" pre:%d eof:%d \n", - (int64_t)s->min_filepos,(int64_t)s->read_filepos,(int64_t)s->max_filepos,min,s->eof); + // AZ: Commented out mp_msg because there is no \n and other debugs that + // EMP parses may be spewed in between this first line and the \n + + //mp_msg(MSGT_CACHE,MSGL_V,"CACHE_PRE_INIT: %"PRId64" [%"PRId64"] %"PRId64" pre:%d eof:%d \n", + //(int64_t)s->min_filepos,(int64_t)s->read_filepos,(int64_t)s->max_filepos,min,s->eof); while(s->read_fileposmin_filepos || s->max_filepos-s->read_fileposmax_filepos-s->read_filepos)/(float)(s->buffer_size), - (int64_t)s->max_filepos-s->read_filepos - ); +// mp_msg(MSGT_CACHE,MSGL_STATUS,MSGTR_CacheFill, +// 100.0*(float)(s->max_filepos-s->read_filepos)/(float)(s->buffer_size), +// (int64_t)s->max_filepos-s->read_filepos +// ); if(s->eof) break; // file is smaller than prefill size if(mp_input_check_interrupt(PREFILL_SLEEP_TIME)) return 0; } - mp_msg(MSGT_CACHE,MSGL_STATUS,"\n"); + //mp_msg(MSGT_CACHE,MSGL_STATUS,"\n"); return 1; // parent exits } Index: stream/network.c =================================================================== --- stream/network.c (revision 24811) +++ stream/network.c (working copy) @@ -74,6 +74,8 @@ { "application/x-mms-framed", DEMUXER_TYPE_ASF }, { "application/vnd.ms.wms-hdr.asfv1", DEMUXER_TYPE_ASF }, { "application/octet-stream", DEMUXER_TYPE_UNKNOWN }, + //MATROSKA + { "video/x-matroska", DEMUXER_TYPE_MATROSKA}, // Playlists { "video/x-ms-wmx", DEMUXER_TYPE_PLAYLIST }, { "video/x-ms-wvx", DEMUXER_TYPE_PLAYLIST }, @@ -353,6 +355,9 @@ case 206: // OK mp_msg(MSGT_NETWORK,MSGL_V,"Content-Type: [%s]\n", http_get_field(http_hdr, "Content-Type") ); mp_msg(MSGT_NETWORK,MSGL_V,"Content-Length: [%s]\n", http_get_field(http_hdr, "Content-Length") ); + // AZ + sscanf(http_get_field(http_hdr, "Content-Length") , "%d", &(stream->streaming_ctrl->length)); + stream->streaming_ctrl->pos = 0; if( http_hdr->body_size>0 ) { if( streaming_bufferize( stream->streaming_ctrl, http_hdr->body, http_hdr->body_size )<0 ) { http_free( http_hdr ); @@ -394,6 +399,23 @@ int nop_streaming_read( int fd, char *buffer, int size, streaming_ctrl_t *stream_ctrl ) { int len=0; + + + { // AZ + //HTTP_header_t* http_hdr = (HTTP_header_t*)stream_ctrl->data; + + mp_msg(MSGT_NETWORK,MSGL_V,"size: %d, length: %d, pos: %d, size : %d\n",size,stream_ctrl->length,stream_ctrl->pos,stream_ctrl->buffer_size); + + if(stream_ctrl->length && stream_ctrl->length < stream_ctrl->pos + size ) { + size = stream_ctrl->length - stream_ctrl->pos; + } + + if(size == 0) { + + return -1; + } + } + //printf("nop_streaming_read\n"); if( stream_ctrl->buffer_size!=0 ) { int buffer_len = stream_ctrl->buffer_size-stream_ctrl->buffer_pos; @@ -413,13 +435,45 @@ } if( len>BUF %d (had %d)\n", (size-len), len); +fflush(stdout); + int keepLooping; + do { + keepLooping = 0; + ret = recv( fd, buffer+len, size-len, 0 ); + if( ret<0 ) { + #ifdef HAVE_WINSOCK2 + i = WSAGetLastError(); + if (i == 10060) { // timeout + keepLooping = 1; + } + #else + if(errno == EAGAIN) { + keepLooping = 1; + } + #endif + + if (keepLooping == 1) { + printf("!!TIMEOUT\n"); + fflush(stdout); + checkEvents(); + usec_sleep(5000); + } else { + mp_msg(MSGT_NETWORK,MSGL_ERR,"nop_streaming_read error : %s %d\n",strerror(errno), i); + } + + } else { + stream_ctrl->pos += ret; + len += ret; + } + } while (keepLooping == 1); +printf("<buf_pos=s->buf_len=0; Index: stream/stream.h =================================================================== --- stream/stream.h (revision 24811) +++ stream/stream.h (working copy) @@ -26,7 +26,8 @@ #define STREAMTYPE_MF 18 #define STREAMTYPE_RADIO 19 -#define STREAM_BUFFER_SIZE 2048 +// AZ: increased buffer size from 2k +#define STREAM_BUFFER_SIZE 32768 #define VCD_SECTOR_SIZE 2352 #define VCD_SECTOR_OFFS 24 @@ -203,9 +204,11 @@ inline static int stream_read(stream_t *s,char* mem,int total){ int len=total; while(len>0){ + //printf("---------------------------------read %d; left %d\n", total, len); int x; x=s->buf_len-s->buf_pos; if(x==0){ + //printf("---------------------------------EOF!\n"); if(!cache_stream_fill_buffer(s)) return total-len; // EOF x=s->buf_len-s->buf_pos; } @@ -214,6 +217,7 @@ memcpy(mem,&s->buffer[s->buf_pos],x); s->buf_pos+=x; mem+=x; len-=x; } + //printf("---------------------------------read complete %d\n", total); return total; } @@ -252,6 +256,8 @@ inline static int stream_seek(stream_t *s,off_t pos){ + // AZ: Added expliecit seek debug (not required for EMP) + mp_msg(MSGT_DEMUX, MSGL_INFO, "seek to %d\n",(long long)pos); mp_dbg(MSGT_DEMUX, MSGL_DBG3, "seek to 0x%qX\n",(long long)pos); if(pospos){ Index: input/input.c =================================================================== --- input/input.c (revision 24811) +++ input/input.c (working copy) @@ -349,8 +349,8 @@ { { KEY_RIGHT, 0 }, "seek 10" }, { { KEY_LEFT, 0 }, "seek -10" }, - { { KEY_UP, 0 }, "seek 60" }, - { { KEY_DOWN, 0 }, "seek -60" }, + { { KEY_UP, 0 }, "volume 1" }, + { { KEY_DOWN, 0 }, "volume -1" }, { { KEY_PAGE_UP, 0 }, "seek 600" }, { { KEY_PAGE_DOWN, 0 }, "seek -600" }, { { '+', 0 }, "audio_delay 0.100" }, @@ -360,8 +360,8 @@ { { '{', 0 }, "speed_mult 0.5" }, { { '}', 0 }, "speed_mult 2.0" }, { { KEY_BACKSPACE, 0 }, "speed_set 1.0" }, - { { 'q', 0 }, "quit" }, - { { KEY_ESC, 0 }, "quit" }, + { { 'q', 0 }, "vo_fullscreen" }, + { { KEY_ESC, 0 }, "vo_fullscreen" }, { { 'p', 0 }, "pause" }, { { ' ', 0 }, "pause" }, { { '.', 0 }, "frame_step" }, @@ -428,7 +428,7 @@ #endif #ifdef HAVE_APPLE_REMOTE { { AR_PLAY, 0}, "pause" }, - { { AR_PLAY_HOLD, 0}, "quit" }, + { { AR_PLAY_HOLD, 0}, "vo_fullscreen" }, { { AR_NEXT, 0 }, "seek 30" }, { { AR_NEXT_HOLD, 0 }, "seek 120" }, { { AR_PREV, 0 }, "seek -10" }, @@ -445,12 +445,12 @@ { { 'w', 0 }, "panscan -0.1" }, { { 'e', 0 }, "panscan +0.1" }, - { { KEY_POWER, 0 }, "quit" }, + { { KEY_POWER, 0 }, "vo_fullscreen" }, { { KEY_MENU, 0 }, "osd" }, { { KEY_PLAY, 0 }, "pause" }, { { KEY_PAUSE, 0 }, "pause" }, { { KEY_PLAYPAUSE, 0 }, "pause" }, - { { KEY_STOP, 0 }, "quit" }, + { { KEY_STOP, 0 }, "vo_fullscreen" }, { { KEY_FORWARD, 0 }, "seek 60" }, { { KEY_REWIND, 0 }, "seek -60" }, { { KEY_NEXT, 0 }, "pt_step 1" }, @@ -461,6 +461,9 @@ { { KEY_CLOSE_WIN, 0 }, "quit" }, + { { MOUSE_BTN0_DBL, 0 }, "vo_fullscreen" }, + { { MOUSE_BTN0, 0 }, "pause" }, + { { '!', 0 }, "seek_chapter -1" }, { { '@', 0 }, "seek_chapter 1" }, Index: input/input.h =================================================================== --- input/input.h (revision 24811) +++ input/input.h (working copy) @@ -100,6 +100,8 @@ #define MP_CMD_TV_TELETEXT_GO_LINK 99 #define MP_CMD_TV_START_SCAN 100 +#define MP_CMD_AZ_PLAYSTATE 2000 + #define MP_CMD_GUI_EVENTS 5000 #define MP_CMD_GUI_LOADFILE 5001 #define MP_CMD_GUI_LOADSUBTITLE 5002 Index: libao2/audio_out.c =================================================================== --- libao2/audio_out.c (revision 24811) +++ libao2/audio_out.c (working copy) @@ -127,7 +127,14 @@ #ifdef USE_OPENAL &audio_out_openal, #endif + +#ifndef TRIMDOWN &audio_out_mpegpes, + &audio_out_null, + // should not be auto-selected: + &audio_out_pcm, +#endif + #ifdef HAVE_DXR2 &audio_out_dxr2, #endif @@ -137,9 +144,6 @@ #ifdef HAVE_V4L2_DECODER &audio_out_v4l2, #endif - &audio_out_null, -// should not be auto-selected: - &audio_out_pcm, NULL }; Index: libao2/Makefile =================================================================== --- libao2/Makefile (revision 24811) +++ libao2/Makefile (working copy) @@ -3,9 +3,12 @@ LIBNAME_MPLAYER = libao2.a SRCS_MPLAYER = audio_out.c \ + $(AO_SRCS) \ + +SRCS_MPLAYER-$(NO_TRIMDOWN) =\ ao_mpegpes.c \ ao_null.c \ ao_pcm.c \ - $(AO_SRCS) \ + include ../mpcommon.mak Index: libvo/aspect.c =================================================================== --- libvo/aspect.c (revision 24811) +++ libvo/aspect.c (working copy) @@ -6,7 +6,7 @@ #include "help_mp.h" //#endif -//#define ASPECT_DEBUG +//#define ASPECT_DEBUG 1 #if defined(ASPECT_DEBUG) || defined(ASPECT_TEST) #include @@ -101,11 +101,17 @@ else tmpw = (int)((float)aspdat.prew * ((float)aspdat.scrw / ((float)aspdat.scrh / (1.0/monitor_aspect)))); + //1920 * (1280/ (800 / (1/1.6))) + //0.625 + //800/1072/1920 tmpw+= tmpw%2; // round + //printf("aspect(2) tmpw %d<=%d\n",tmpw,aspdat.scrw); if(tmpw<=aspdat.scrw /*&& tmpw>=aspdat.orgw*/){ *srch = zoom?aspdat.scrh:aspdat.preh; *srcw = tmpw; }else{ + //*srch = zoom?aspdat.scrh:aspdat.preh; + //*srcw = tmpw; #ifndef ASPECT_TEST mp_msg(MSGT_VO,MSGL_WARN,MSGTR_LIBVO_ASPECT_NoSuitableNewResFound); #else Index: libvo/Makefile =================================================================== --- libvo/Makefile (revision 24811) +++ libvo/Makefile (working copy) @@ -3,14 +3,25 @@ LIBNAME_COMMON = libosd.a LIBNAME_MPLAYER = libvo.a -SRCS_MPLAYER = aspect.c \ +#SRCS_MPLAYER = aspect.c \ +# geometry.c \ +# spuenc.c \ +# video_out.c \ +# vo_mpegpes.c \ +# vo_null.c \ +# vo_yuv4mpeg.c \ +# $(VO_SRCS) \ + +SRCS_MPLAYER = video_out.c \ + aspect.c \ geometry.c \ - spuenc.c \ - video_out.c \ + vo_null.c \ + $(VO_SRCS) \ + +SRCS_MPLAYER-$(NO_TRIMDOWN) = spuenc.c \ vo_mpegpes.c \ - vo_null.c \ vo_yuv4mpeg.c \ - $(VO_SRCS) \ + SRCS_MPLAYER-$(VIDIX) += vosub_vidix.c Index: libvo/video_out.c =================================================================== --- libvo/video_out.c (revision 24811) +++ libvo/video_out.c (working copy) @@ -254,8 +254,10 @@ #ifdef HAVE_XVMC &video_out_xvmc, #endif +#ifndef TRIMDOWN &video_out_mpegpes, &video_out_yuv4mpeg, +#endif #ifdef HAVE_PNG &video_out_png, #endif Index: libvo/vo_directx.c =================================================================== --- libvo/vo_directx.c (revision 24811) +++ libvo/vo_directx.c (working copy) @@ -523,6 +523,15 @@ static void check_events(void) { + // AZ: If we were passed a WinID, quit the player when that window is gone + if (WinID != -1) { + int i = IsWindow(hWnd); + if (i != 1) { + printf("AZ Quit\n"); fflush(stdout); + exit_player("AZ Quit"); + } + } + MSG msg; while (PeekMessage(&msg, NULL, 0, 0,PM_REMOVE)) { @@ -538,7 +547,8 @@ DDOVERLAYFX ovfx; DWORD dwUpdateFlags=0; int width,height; - + int deltaWidth,deltaHeight; + if(!vidmode && !vo_fs && WinID!=-1) { RECT current_rect = {0, 0, 0, 0}; GetWindowRect(hWnd, ¤t_rect); @@ -583,24 +593,43 @@ rd.left = pt.x; rd.top = pt.y; if(!nooverlay && (!width || !height)){ - /*window is minimized*/ - ddrval = g_lpddsOverlay->lpVtbl->UpdateOverlay(g_lpddsOverlay,NULL, g_lpddsPrimary, NULL, DDOVER_HIDE, NULL); - return 0; - } + /*window is minimized*/ + ddrval = g_lpddsOverlay->lpVtbl->UpdateOverlay(g_lpddsOverlay,NULL, g_lpddsPrimary, NULL, DDOVER_HIDE, NULL); + return 0; + } + + // AZ: deltaWidth/Height for centering the video in the window + deltaWidth = deltaHeight = 0; if(vo_keepaspect){ - int tmpheight=((float)width/window_aspect); - tmpheight+=tmpheight%2; - if(tmpheight > height){ - width=((float)height*window_aspect); - width+=width%2; - } - else height=tmpheight; - } + int tmpheight=((float)width/window_aspect); + + //printf("tmpheight=%d; height=%d\n", tmpheight, height); fflush(stdout); + + tmpheight+=tmpheight%2; + if (tmpheight > height) { + deltaWidth=width; + width=((float)height*window_aspect); + width+=width%2; + deltaWidth-=width; + } else { + deltaHeight=height-tmpheight; + height=tmpheight; + } + //printf("width=%d; deltawidth=%d; dh=%d\n", width, deltaWidth, deltaHeight); fflush(stdout); + } + if (WinID == -1) - while(ShowCursor(TRUE)<=0){} - } - rd.right=rd.left+width; - rd.bottom=rd.top+height; + while(ShowCursor(TRUE)<=0){} + } + + if (!vo_fs && !vidmode) { + rd.left+=deltaWidth/2; + rd.top+=deltaHeight/2; + } + rd.right=rd.left+width; + rd.bottom=rd.top+height; + + //printf("draw %d,%d,%d,%d\n", rd.left, rd.top, rd.right, rd.bottom); fflush(stdout); /*ok, let's workaround some overlay limitations*/ if(!nooverlay) @@ -915,7 +944,6 @@ } case WM_WINDOWPOSCHANGED: { - //printf("Windowposchange\n"); if(g_lpddsBack != NULL) //or it will crash with -vm { Directx_ManageDisplay(); @@ -1087,12 +1115,15 @@ wc.hbrBackground = vidmode ? blackbrush : colorbrush; wc.lpszClassName = WNDCLASSNAME_WINDOWED; wc.lpszMenuName = NULL; - RegisterClass(&wc); - if (WinID != -1) hWnd = WinID; - else + // AZ: For now, don't register with there's a passed in WinID (locks UI) + if (WinID != -1) { + hWnd = WinID; + } else { + RegisterClass(&wc); hWnd = CreateWindowEx(vidmode?WS_EX_TOPMOST:0, WNDCLASSNAME_WINDOWED,"",(vidmode || !vo_border)?WS_POPUP:WNDSTYLE, CW_USEDEFAULT, CW_USEDEFAULT, 100, 100,NULL,NULL,hInstance,NULL); + } wc.hbrBackground = blackbrush; wc.lpszClassName = WNDCLASSNAME_FULLSCREEN; RegisterClass(&wc); @@ -1230,6 +1261,8 @@ uint32_t y = mpi->y; uint32_t w = mpi->w; uint32_t h = mpi->h; + + //printf("Put Image (%d,%d,%d,%d)\n", mpi->x, mpi->y, mpi->w, mpi->h); fflush(stdout); if (WinID != -1) Directx_ManageDisplay(); @@ -1271,7 +1304,10 @@ config(uint32_t width, uint32_t height, uint32_t d_width, uint32_t d_height, uint32_t options, char *title, uint32_t format) { RECT rd; - vo_fs = options & 0x01; + // AZ: Keep FS mode across playlist + if (!vo_fs) { + vo_fs = options & 0x01; + } image_format = format; image_width = width; image_height = height; @@ -1576,6 +1612,15 @@ } aspect_save_screenres(vo_screenwidth, vo_screenheight); return VO_TRUE; + // AZ: fading on pause (disabled for now) + case VOCTRL_PAUSE: + mp_msg(MSGT_VO, MSGL_INFO,"Pause detected\n"); + //fadeFrameOut(); + return VO_TRUE; + case VOCTRL_RESUME: + mp_msg(MSGT_VO, MSGL_INFO,"Resume detected\n"); + //fadeFrameIn(); + return VO_TRUE; case VOCTRL_RESET: last_rect.left = 0xDEADC0DE; // reset window position cache // fall-through intended Index: libvo/vo_gl2.c =================================================================== --- libvo/vo_gl2.c (revision 24811) +++ libvo/vo_gl2.c (working copy) @@ -452,6 +452,11 @@ #ifdef GL_WIN32 static int config_w32(uint32_t width, uint32_t height, uint32_t d_width, uint32_t d_height, uint32_t flags, char *title, uint32_t format) { + // AZ: keep fullscreen setting across playlist + if(vo_fs) { + flags = flags | VOFLAG_FULLSCREEN; + } + if (!vo_w32_config(d_width, d_height, flags)) return -1; Index: configure =================================================================== --- configure (revision 24811) +++ configure (working copy) @@ -507,7 +507,8 @@ _libavparsers_all=`sed -n 's/^[^#]*PARSER.*(.*, *\(.*\)).*/\1_parser/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'` _libavparsers=$_libavparsers_all _libavbsfs_all=`sed -n 's/^[^#]*BSF.*(.*, *\(.*\)).*/\1_bsf/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]'` -_libavbsfs=$_libavbsfs_all +#_libavbsfs=$_libavbsfs_all +_libavbsfs="" _libavdemuxers_all=`sed -n 's/^[^#]*DEMUX.*(.*, *\(.*\)).*/\1_demuxer/p' libavformat/allformats.c | tr '[a-z]' '[A-Z]'` _libavdemuxers=`echo $_libavdemuxers_all | sed -e s/AUDIO_BEOS_DEMUXER// -e s/OSS_DEMUXER// -e s/DC1394_DEMUXER// -e s/DV1394_DEMUXER// -e s/REDIR_DEMUXER// -e s/RTSP_DEMUXER// -e s/SDP_DEMUXER// -e s/V4L_DEMUXER// -e s/BKTR_DEMUXER// -e s/X11_GRAB_DEVICE_DEMUXER// -e s/V4L2_DEMUXER// -e s/LIBNUT_DEMUXER// -e s/AVISYNTH_DEMUXER// ` _libavmuxers_all=`sed -n 's/^[^#]*_MUX.*(.*, *\(.*\)).*/\1_muxer/p' libavformat/allformats.c | tr '[a-z]' '[A-Z]'` @@ -1198,6 +1199,16 @@ esac done +echo "_libavdecoders" +echo $_libavdecoders +echo "_libavparsers" +echo $_libavparsers +echo "_libavbsfs" +echo $_libavbsfs +echo "_libavdemuxers" +echo $_libavdemuxers + + # Atmos: moved this here, to be correct, if --prefix is specified test -z "$_bindir" && _bindir="$_prefix/bin" test -z "$_datadir" && _datadir="$_prefix/share/mplayer" @@ -6683,7 +6694,7 @@ _def_muxers='#define CONFIG_MUXERS 1' else # mpeg1video for vf_lavc, snow for vf_uspp and vf_mcdeint - _libavencoders="MPEG1VIDEO_ENCODER SNOW_ENCODER" + _libavencoders="" _libavmuxers="" fi echores "$_mencoder" Index: mplayer.c =================================================================== --- mplayer.c (revision 24811) +++ mplayer.c (working copy) @@ -214,8 +214,10 @@ double vout_time_usage=0; static double audio_time_usage=0; static int total_time_usage_start=0; -static int total_frame_cnt=0; -static int drop_frame_cnt=0; // total number of dropped frames +// AZ: changed frame_cnt variables to non-static so they can be extern'd and +// queried (is there a better way to do this?) +int total_frame_cnt=0; +int drop_frame_cnt=0; // total number of dropped frames int benchmark=0; // options: @@ -665,6 +667,9 @@ void exit_player_with_rc(const char* how, int rc){ + // AZ: Added debug stating the player is exiting + printf("Exit player"); fflush(stdout); + if (mpctx->user_muted && !mpctx->edl_muted) mixer_mute(&mpctx->mixer); uninit_player(INITED_ALL); #ifdef HAVE_X11 @@ -1264,6 +1269,7 @@ msg->prev = osd_msg_stack; osd_msg_stack = msg; } + // write the msg va_start(va,fmt); r = vsnprintf(msg->msg, 64, fmt, va); @@ -1467,7 +1473,8 @@ // Clear the term osd line if(term_osd && osd_text[0]) { osd_text[0] = 0; - printf("%s\n",term_osd_esc); + // AZ: Comment out OSD spew + //printf("O: %s\n",term_osd_esc); } } @@ -2071,9 +2078,15 @@ return frame_time; } +// AZ: Various changes here to (better?) handle pausing with audio +// and handling functions that want pausing_keep (non-pausing_keep may +// be borked) void pause_loop(void) { mp_cmd_t* cmd; + int brk_cmd = 0; + int resume_playback=0; + if (!quiet) { // Small hack to display the pause message on the OSD line. // The pause string is: "\n == PAUSE == \r" so we need to @@ -2092,13 +2105,18 @@ if (use_gui) guiGetEvent(guiCEvent, (char *)guiSetPause); #endif + + //pause audio first... + if (mpctx->audio_out && mpctx->sh_audio) + mpctx->audio_out->pause(); // pause audio, keep data if possible + if (mpctx->video_out && mpctx->sh_video && vo_config_count) mpctx->video_out->control(VOCTRL_PAUSE, NULL); - if (mpctx->audio_out && mpctx->sh_audio) - mpctx->audio_out->pause(); // pause audio, keep data if possible +keep_pausing: while ( (cmd = mp_input_get_cmd(20, 1, 1)) == NULL) { + if (mpctx->sh_video && mpctx->video_out && vo_config_count) mpctx->video_out->check_events(); #ifdef HAVE_NEW_GUI @@ -2115,16 +2133,37 @@ #endif usec_sleep(20000); } - if (cmd && cmd->id == MP_CMD_PAUSE) { - cmd = mp_input_get_cmd(0,1,0); - mp_cmd_free(cmd); - } - mpctx->osd_function=OSD_PLAY; - if (mpctx->audio_out && mpctx->sh_audio) - mpctx->audio_out->resume(); // resume audio - if (mpctx->video_out && mpctx->sh_video && vo_config_count) - mpctx->video_out->control(VOCTRL_RESUME, NULL); // resume video - (void)GetRelativeTime(); // ignore time that passed during pause + if (cmd) { + if (cmd->id == MP_CMD_PAUSE) { + cmd = mp_input_get_cmd(0,1,0); + mp_cmd_free(cmd); + cmd=NULL; + resume_playback=1; + } else if(cmd->pausing != 2) { + resume_playback=1; + } + } + if(resume_playback) { + mpctx->osd_function=OSD_PLAY; + + if (mpctx->video_out && mpctx->sh_video && vo_config_count) + mpctx->video_out->control(VOCTRL_RESUME, NULL); // resume video + if (mpctx->audio_out && mpctx->sh_audio) + mpctx->audio_out->resume(); // resume audio + (void)GetRelativeTime(); // ignore time that passed during pause + } else { + cmd = mp_input_get_cmd(0,1,0); + brk_cmd = run_command(mpctx, cmd); + + if (brk_cmd == 2) { + mp_input_queue_cmd(cmd); + } else { + mp_cmd_free(cmd); + goto keep_pausing; + } + + } + #ifdef HAVE_NEW_GUI if (use_gui) { if (guiIntfStruct.Playing == guiSetStop) @@ -2516,7 +2555,7 @@ } //------ load global data first ------ - +//#ifndef TRIMDOWN // check font #ifdef HAVE_FREETYPE init_freetype(); @@ -2547,7 +2586,8 @@ #endif vo_init_osd(); - +//#endif + #ifdef USE_ASS ass_library = ass_init(); #endif @@ -2726,6 +2766,11 @@ } #endif /* HAVE_NEW_GUI */ +//AZ: Send stop event to EMP +if (player_idle_mode && !filename) { + printf("!!Stopped\n"); fflush(stdout); +} + while (player_idle_mode && !filename) { play_tree_t * entry = NULL; mp_cmd_t * cmd; @@ -3351,6 +3396,10 @@ end_at.type = END_AT_NONE; } +// AZ: Send Play event to EMP +if(filename) { + printf(">>Play %s\n", filename_recode(filename)); fflush(stdout); +} while(!mpctx->eof){ float aq_sleep_time=0; @@ -3588,8 +3637,6 @@ goto_next_file: // don't jump here after ao/vo/getch initialization! -mp_msg(MSGT_CPLAYER,MSGL_INFO,"\n"); - if(benchmark){ double tot=video_time_usage+vout_time_usage+audio_time_usage; double total_time_usage; @@ -3617,7 +3664,9 @@ } // time to uninit all, except global stuff: -uninit_player(INITED_ALL-(INITED_GUI+INITED_INPUT+(fixed_vo?INITED_VO:0))); +// AZ: Don't uninit VO (We'll do that later) +//uninit_player(INITED_ALL-(INITED_GUI+INITED_INPUT+(fixed_vo?INITED_VO:0))); +uninit_player(INITED_ALL-(INITED_GUI+INITED_INPUT+INITED_VO)); if ( mpctx->set_of_sub_size > 0 ) { @@ -3683,6 +3732,14 @@ } #endif +// AZ: uninit if nothing next in playlist only +// inited_flags will be set off for INITED_VO, and reinit_video_chain should +// startup video again +if (!fixed_vo && mpctx->playtree_iter == NULL) { + printf("uninit\n"); fflush(stdout); + uninit_player(INITED_VO); +} + if(use_gui || mpctx->playtree_iter != NULL || player_idle_mode){ if (!mpctx->playtree_iter) filename = NULL; mpctx->eof = 0; @@ -3694,3 +3751,12 @@ return 1; } + + +// AZ: call video out's check-events to allow it to handle things (like UI events) +void checkEvents() { + current_module="vo_check_events"; + if (vo_config_count && mpctx && mpctx->video_out) { + mpctx->video_out->check_events(); + } +} \ No newline at end of file Index: mplayer.h =================================================================== --- mplayer.h (revision 24811) +++ mplayer.h (working copy) @@ -49,5 +49,11 @@ extern void exit_player(const char* how); extern void update_set_of_subtitles(void); +// AZ: access to checkEvents, which may allow the UI to update +extern void checkEvents(); +// AZ: access to frame counts for EMP QOS +extern int total_frame_cnt; +extern int drop_frame_cnt; // total number of dropped frames + #endif /* MPLAYER_H */ Index: cfg-common.h =================================================================== --- cfg-common.h (revision 24811) +++ cfg-common.h (working copy) @@ -24,9 +24,11 @@ #else {"cache", "MPlayer was compiled without cache2 support.\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL}, #endif +#ifndef TRIMDOWN {"vcd", "-vcd N has been removed, use vcd://N instead.\n", CONF_TYPE_PRINT, CONF_NOCFG ,0,0, NULL}, {"cuefile", "-cuefile has been removed, use cue://filename:N where N is the track number.\n", CONF_TYPE_PRINT, 0, 0, 0, NULL}, {"cdrom-device", &cdrom_device, CONF_TYPE_STRING, 0, 0, 0, NULL}, +#endif #ifdef USE_DVDREAD {"dvd-device", &dvd_device, CONF_TYPE_STRING, 0, 0, 0, NULL}, {"dvd-speed", &dvd_speed, CONF_TYPE_INT, 0, 0, 0, NULL}, @@ -55,8 +57,10 @@ {"cookies-file", &cookies_file, CONF_TYPE_STRING, 0, 0, 0, NULL}, {"prefer-ipv4", &network_prefer_ipv4, CONF_TYPE_FLAG, 0, 0, 1, NULL}, {"ipv4-only-proxy", &network_ipv4_only_proxy, CONF_TYPE_FLAG, 0, 0, 1, NULL}, +#ifndef TRIMDOWN {"reuse-socket", &reuse_socket, CONF_TYPE_FLAG, CONF_GLOBAL, 0, 1, NULL}, {"noreuse-socket", &reuse_socket, CONF_TYPE_FLAG, CONF_GLOBAL, 1, 0, NULL}, +#endif //TRIMDOWN #ifdef HAVE_AF_INET6 {"prefer-ipv6", &network_prefer_ipv4, CONF_TYPE_FLAG, 0, 1, 0, NULL}, #else @@ -80,6 +84,8 @@ #else {"rtsp-stream-over-tcp", "-rtsp-stream-over-tcp requires the \"LIVE555 Streaming Media\" libraries.\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL}, #endif + +#ifndef TRIMDOWN #ifdef MPLAYER_NETWORK {"rtsp-port", &rtsp_port, CONF_TYPE_INT, CONF_RANGE, -1, 65535, NULL}, {"rtsp-destination", &rtsp_destination, CONF_TYPE_STRING, CONF_MIN, 0, 0, NULL}, @@ -87,7 +93,8 @@ {"rtsp-port", "MPlayer was compiled without network support.\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL}, {"rtsp-destination", "MPlayer was compiled without network support.\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL}, #endif - +#endif //TRIMDOWN + // ------------------------- demuxer options -------------------- // number of frames to play/convert @@ -102,6 +109,7 @@ {"edl", &edl_filename, CONF_TYPE_STRING, 0, 0, 0, NULL}, +#ifndef TRIMDOWN // AVI specific: force non-interleaved mode {"ni", &force_ni, CONF_TYPE_FLAG, 0, 0, 1, NULL}, {"noni", &force_ni, CONF_TYPE_FLAG, 0, 1, 0, NULL}, @@ -122,9 +130,11 @@ { "hr-mp3-seek", &hr_mp3_seek, CONF_TYPE_FLAG, 0, 0, 1, NULL }, { "nohr-mp3-seek", &hr_mp3_seek, CONF_TYPE_FLAG, 0, 1, 0, NULL}, + { "rawaudio", &demux_rawaudio_opts, CONF_TYPE_SUBCONFIG, 0, 0, 0, NULL}, { "rawvideo", &demux_rawvideo_opts, CONF_TYPE_SUBCONFIG, 0, 0, 0, NULL}, - +#endif + #ifdef HAVE_CDDA { "cdda", &cdda_opts, CONF_TYPE_SUBCONFIG, 0, 0, 0, NULL}, #endif @@ -139,6 +149,7 @@ { "extbased", &extension_parsing, CONF_TYPE_FLAG, 0, 0, 1, NULL }, { "noextbased", &extension_parsing, CONF_TYPE_FLAG, 0, 1, 0, NULL }, +#ifndef TRIMDOWN {"mf", mfopts_conf, CONF_TYPE_SUBCONFIG, 0,0,0, NULL}, #ifdef USE_RADIO {"radio", radioopts_conf, CONF_TYPE_SUBCONFIG, 0, 0, 0, NULL}, @@ -155,13 +166,15 @@ #else {"pvr", "MPlayer was compiled without V4L2/PVR interface support.\n", CONF_TYPE_PRINT, 0, 0, 0, NULL}, #endif + {"vivo", vivoopts_conf, CONF_TYPE_SUBCONFIG, 0, 0, 0, NULL}, +#endif #ifdef HAS_DVBIN_SUPPORT {"dvbin", dvbin_opts_conf, CONF_TYPE_SUBCONFIG, 0, 0, 0, NULL}, #endif // ------------------------- a-v sync options -------------------- - +#ifndef TRIMDOWN // AVI specific: A-V sync mode (bps vs. interleaving) {"bps", &pts_from_bps, CONF_TYPE_FLAG, 0, 0, 1, NULL}, {"nobps", &pts_from_bps, CONF_TYPE_FLAG, 0, 1, 0, NULL}, @@ -182,7 +195,8 @@ // ignore header-specified delay (dwStart) {"ignore-start", &ignore_start, CONF_TYPE_FLAG, 0, 0, 1, NULL}, {"noignore-start", &ignore_start, CONF_TYPE_FLAG, 0, 1, 0, NULL}, - +#endif + #ifdef USE_LIBA52 {"a52drc", &a52_drc_level, CONF_TYPE_FLOAT, CONF_RANGE, 0, 1, NULL}, #endif @@ -234,6 +248,7 @@ {"noflip", &flip, CONF_TYPE_FLAG, 0, -1, 0, NULL}, {"tsfastparse", "-tsfastparse is no longer a valid option.\n", CONF_TYPE_PRINT, CONF_NOCFG ,0,0, NULL }, +#ifndef TRIMDOWN {"tsprog", &ts_prog, CONF_TYPE_INT, CONF_RANGE, 0, 65534, NULL}, #define TS_MAX_PROBE_SIZE 2000000 /* don't forget to change this in libmpdemux/demux_ts.c too */ {"tsprobe", &ts_probe, CONF_TYPE_POSITION, 0, 0, TS_MAX_PROBE_SIZE, NULL}, @@ -244,7 +259,8 @@ {"slices", &vd_use_slices, CONF_TYPE_FLAG, 0, 0, 1, NULL}, {"noslices", &vd_use_slices, CONF_TYPE_FLAG, 0, 1, 0, NULL}, {"field-dominance", &field_dominance, CONF_TYPE_INT, CONF_RANGE, -1, 1, NULL}, - +#endif + #ifdef USE_LIBAVCODEC {"lavdopts", lavc_decode_opts_conf, CONF_TYPE_SUBCONFIG, 0, 0, 0, NULL}, #endif @@ -545,6 +561,7 @@ {NULL, NULL, 0, 0, 0, 0, NULL} }; +#ifndef TRIMDOWN /* VIVO demuxer options: */ extern int vivo_param_version; extern char *vivo_param_acodec; @@ -570,12 +587,12 @@ {NULL, NULL, 0, 0, 0, 0, NULL} }; + + extern int mf_w; extern int mf_h; extern float mf_fps; extern char * mf_type; -extern m_obj_settings_t* vf_settings; -extern m_obj_list_t vf_obj_list; m_option_t mfopts_conf[]={ {"on", "-mf on has been removed, use mf:// instead.\n", CONF_TYPE_PRINT, 0, 0, 1, NULL}, @@ -585,6 +602,9 @@ {"type", &mf_type, CONF_TYPE_STRING, 0, 0, 0, NULL}, {NULL, NULL, 0, 0, 0, 0, NULL} }; +#endif +extern m_obj_settings_t* vf_settings; +extern m_obj_list_t vf_obj_list; #include "libaf/af.h" extern af_cfg_t af_cfg; // Audio filter configuration, defined in libmpcodecs/dec_audio.c Index: command.c =================================================================== --- command.c (revision 24811) +++ command.c (working copy) @@ -499,6 +499,23 @@ } } +/// Paused (R) +static int mp_property_paused(m_option_t * prop, int action, void *arg, + MPContext * mpctx) +{ + int paused = mpctx->osd_function == OSD_PAUSE; + return m_property_flag(prop, action, arg, &paused); +} + +/// Percent Drop Frame +static int mp_property_percent_drop_frame(m_option_t * prop, int action, + void *arg, MPContext * mpctx) +{ + float drop_frame = total_frame_cnt == 0 ? 0 : (float)drop_frame_cnt/total_frame_cnt; + return m_property_float_range(prop, action, arg, &drop_frame); +} + + /// Audio delay (RW) static int mp_property_audio_delay(m_option_t * prop, int action, void *arg, MPContext * mpctx) @@ -1630,6 +1647,12 @@ M_OPT_MIN, 0, 0, NULL }, { "metadata", mp_property_metadata, CONF_TYPE_STRING_LIST, 0, 0, 0, NULL }, + + // AZ + { "paused", mp_property_paused, CONF_TYPE_FLAG, + M_OPT_RANGE, 0, 1, NULL }, + { "percent_drop_frame", mp_property_percent_drop_frame, CONF_TYPE_FLOAT, + M_OPT_RANGE, 0.00, 100.0, NULL }, // Audio { "volume", mp_property_volume, CONF_TYPE_FLOAT, @@ -2784,6 +2807,11 @@ break; #endif + case MP_CMD_AZ_PLAYSTATE: { + mp_msg(MSGT_GLOBAL, MSGL_INFO, "ANS_%s=%s\n", "PLAYSTATE"); + } + break; + default: #ifdef HAVE_NEW_GUI if ((use_gui) && (cmd->id > MP_CMD_GUI_EVENTS)) Index: common.mak =================================================================== --- common.mak (revision 24811) +++ common.mak (working copy) @@ -10,7 +10,7 @@ ASM_OBJS += $(ASM_OBJS-yes) CPP_OBJS += $(CPP_OBJS-yes) -CFLAGS += -DHAVE_AV_CONFIG_H -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE \ +CFLAGS += -DHAVE_AV_CONFIG_H=1 -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE \ -D_ISOC9X_SOURCE -I$(BUILD_ROOT) -I$(SRC_PATH) \ -I$(SRC_PATH)/libavutil $(OPTFLAGS) Index: mp_msg.c =================================================================== --- mp_msg.c (revision 24811) +++ mp_msg.c (working copy) @@ -209,6 +209,6 @@ if (lev <= MSGL_WARN){ fprintf(stderr, "%s", tmp);fflush(stderr); } else { - printf("%s", tmp);fflush(stdout); + printf("%s", tmp, mod, lev);fflush(stdout); } } Index: libmpdemux/Makefile =================================================================== --- libmpdemux/Makefile (revision 24811) +++ libmpdemux/Makefile (working copy) @@ -3,20 +3,26 @@ LIBNAME_COMMON = libmpdemux.a LIBNAME_MENCODER = libmpmux.a -SRCS_COMMON = asfheader.c \ - aviheader.c \ - aviprint.c \ - demuxer.c \ +SRCS_COMMON = demuxer.c \ + demux_mkv.c ebml.c \ + video.c \ + parse_es.c \ + extension.c \ + demux_audio.c \ + demux_demuxers.c \ + mpeg_hdr.c \ + aviprint.c \ + mp3_hdr.c \ + demux_avi.c \ + aviheader.c \ + +SRCS_COMMON-$(NO-TRIMDOWN) = asfheader.c \ demux_aac.c \ demux_asf.c \ - demux_audio.c \ - demux_avi.c \ - demux_demuxers.c \ demux_film.c \ demux_fli.c \ demux_lmlm4.c \ demux_mf.c \ - demux_mkv.c ebml.c \ demux_mov.c \ demux_mpg.c \ demux_nsv.c \ @@ -34,14 +40,9 @@ demux_viv.c \ demux_vqf.c \ demux_y4m.c \ - extension.c \ mf.c \ - mp3_hdr.c \ - mpeg_hdr.c \ mpeg_packetizer.c \ - parse_es.c \ parse_mp4.c \ - video.c \ yuv4mpeg.c \ yuv4mpeg_ratio.c \ Index: libmpdemux/video.c =================================================================== --- libmpdemux/video.c (revision 24811) +++ libmpdemux/video.c (working copy) @@ -380,8 +380,13 @@ return 1; } - +#ifndef TRIMDOWN void ty_processuserdata( unsigned char* buf, int len ); +#else +void ty_processuserdata( unsigned char* buf, int len ) +{ +} +#endif static void process_userdata(unsigned char* buf,int len){ int i; Index: libmpdemux/demuxer.c =================================================================== --- libmpdemux/demuxer.c (revision 24811) +++ libmpdemux/demuxer.c (working copy) @@ -69,6 +69,8 @@ extern demuxer_desc_t demuxer_desc_nut; demuxer_desc_t* demuxer_list[] = { + &demuxer_desc_matroska, +#ifndef TRIMDOWN &demuxer_desc_rawaudio, &demuxer_desc_rawvideo, #ifdef USE_TV @@ -85,7 +87,6 @@ &demuxer_desc_nuv, &demuxer_desc_real, &demuxer_desc_smjpeg, - &demuxer_desc_matroska, &demuxer_desc_realaudio, &demuxer_desc_vqf, &demuxer_desc_mov, @@ -132,6 +133,7 @@ #ifdef HAVE_XMMS &demuxer_desc_xmms, #endif +#endif NULL }; Index: libaf/Makefile =================================================================== --- libaf/Makefile (revision 24811) +++ libaf/Makefile (working copy) @@ -3,11 +3,15 @@ LIBNAME_COMMON = libaf.a SRCS_COMMON = af.c \ - af_center.c \ + af_dummy.c \ + af_tools.c \ + format.c \ + $(AF_SRCS) \ + +SRCS_COMMON-$(NO_TRIMDOWN) = af_center.c \ af_channels.c \ af_comp.c \ af_delay.c \ - af_dummy.c \ af_equalizer.c \ af_extrastereo.c \ af_format.c \ @@ -20,13 +24,11 @@ af_sub.c \ af_surround.c \ af_sweep.c \ - af_tools.c \ af_volnorm.c \ af_volume.c \ filter.c \ - format.c \ window.c \ - $(AF_SRCS) \ + SRCS_COMMON-$(HAVE_SYS_MMAN_H) += af_export.c SRCS_COMMON-$(LIBAVCODEC) += af_lavcresample.c Index: libaf/af.c =================================================================== --- libaf/af.c (revision 24811) +++ libaf/af.c (working copy) @@ -34,6 +34,7 @@ static af_info_t* filter_list[]={ &af_info_dummy, +#ifndef TRIMDOWN &af_info_delay, &af_info_channels, &af_info_format, @@ -61,6 +62,7 @@ &af_info_center, &af_info_sinesuppress, &af_info_karaoke, +#endif NULL };