diff options
Diffstat (limited to 'DOCS/ChangeLog.mpeg')
-rw-r--r-- | DOCS/ChangeLog.mpeg | 232 |
1 files changed, 232 insertions, 0 deletions
diff --git a/DOCS/ChangeLog.mpeg b/DOCS/ChangeLog.mpeg new file mode 100644 index 0000000000..265a57c16b --- /dev/null +++ b/DOCS/ChangeLog.mpeg @@ -0,0 +1,232 @@ +ChangeLog: +~~~~~~~~~~ +v0.2: [first public release] +- parser: add support for VOB files (audio format still has problems...) +- libmpeg3: improvements in file-type detector, supporting mpegs with RIFF hdr +- libmpeg3: improvements on mpeg3_read_program() to handle damaged files better +- libmpeg3: new functions for separated PTS access: mpeg3_audio_pts() and + mpeg3_video_pts(), they return timestamp in seconds, format: double +- play: new audio-video sync method, using timestamps from streams. + much better, even on very damaged files! +- play: measuring of audio buffer size instead constant hard-wired value +- libmpeg3: more improvements to handle better strange files... +- play: drop timestamp correction if > 2 seconds (good for concatenated files) + +v0.3: +- much better audio-video sync, using limited timestamp correction +- TVout directory added, with tools & scripts to setup TVout on Matrox cards + (it is able to play mpegs fullscreen on TV without using X) + +v0.5: +- integrating dvdview for video decoding + (still using libmpeg3 for system stream parsing and audio decoding) + -> not works... some variable randomly changes (uninitialized pointers + in dvdview??? c++/c mixing problem?) + +v0.6: +- new player from scratch, using my mp3lib for audio, parser.c for demuxing. + integrated dvdview is still buggy... + +v0.7: [second edition] +- dvdview as separated process, using FIFOs for communication. +- some fixes in dvdview/system/sysdec1.cc, improved re-syncing on reset +- double-buffering support into dvdview's mga_vid class (and some + changes in the mga_vid kernel module too!) +- EOF problem solved +- background playing option (using MGA Color-Keying and xsetroot) +- rebuild README, added Standard Disclaimer section + +v0.71: +- better missing-stream detection (counting only the real packets) +- check for file and missing streams before fork() +- fixed ugly byteorder bug when reading header dword +- new system stream sync method (doesn't requires SYSTEM_HEADER_START_CODE) +- seeking (byte or second pos), works *only* with streams with immediate + SYSTEM_HEADER frames. + +v0.8: [seeking works] +- implementing own video packet reader -> disabling the whole streaming part + of dvdview. +- saving system headers, and re-sent after starting dvdview (seeking/resync) + -> allow seeking in single-header mpeg files (contact2.mpg) +- advanced resync and seek_sec method, using video-packet type-checks +- fix read() problem, when not enough bytes available in fifo (see man 2 read) +- removed unused objects (postproc,options,streaming) from dvdview's Makefile + (smaller executable, faster compile) +- sec. and bytepos seek fixed, works well now. +- simple console gui, using my getch2 (from mailer3 source) for keyboard. + allows seek,pause,quit functions (for testing only) + it's time to begin develop some nice GUI with skins, plugins etc :) +- improved runtime seeking, added force_redraw variable, and PTS audio + correction after every seek. + +v0.81: +- fps fixed (other than 25fps supported again) +- EOF handling fixed again +- nosound support (currently only system streams supported, not video-only) + also see -nosound commandline option +- mga_vid: changed mmap() to allow double buffering in 704x528 +- mga_vid: double buffering is optional from now (dvdview option -db ) +* it successfully plays .VOB files (without sound) +- PTS/DTS support in mpeg-2 system streams (.vob files) +- PCM audio (48kHz stereo, unsigned, swapped byteorder) playing implemented +* it "plays" .VOB files with PCM sound, but it's too sloooooow :((( +- some optimization of dvdview's bitstream handler (see FillBits & GetBitsFast) + +v0.82: [VOB support] +- updated dvdview from current CVS version (1.2.0-pre) -> about 25% faster!!! +* it's now fast enough for VOB playback +- AC3 audio support (using Aaron Holtzman's libac3 from ac3dec package) +- new, simpler Makefile for libac3 +- re-organized text files (README splitted to ChangeLog and AUTHORS) + +v0.83: [ALSA support] +- some timing code to fix audio syncing with ALSA drivers (test it! I can't) + use -alsa cmdline option to enable this experimental code! +- cmdline option (-abs) for overriding audio buffer size (default: measured) + why is it needed? some audio drivers has bad implementaion of select(), + so measuring buffer size gives false result. + if you hear sound before picture window appears, then you should use this! + +v0.84: +- multiple DVD audio channels/streams support (use -aid option to select chn.) +- cmdline option for maximum PTS time correction (-mc <value>) +- PTS sync code moved to frame display loop -> more precise timing + now it sync audio after every 5 decoded frames +- cmdline option for override frame rate (-fps <rate>) + some .VOB files has bad frame rate value in headers (why? any ideas?) +- ac3 audio seeking works (some hack in libac3's parse.c) + +v0.85: [first non-experimental release] +- directory structure changed +- better documentation, added new INSTALL +- every Makefile uses OPTFLAGS environment variable, see INSTALL +- help (run mpg12play without any parameters or with -h/--help) +- fixed byte seeking (-sb) +- allow selecting mpeg audio channel, see -aid (streams 0x1C0-1DF) +- allow selecting video channel, see -vid (0x1E0-1EF) +- allow audio format override, see -afm +- new streaming system (with 4k buffering) +- initial VCD (Video CD) support, use -vcd to select track, and give + device name as filename (e.g.: mpg12play -vcd 2 /dev/cdrom) + Problems with dual streaming, it's very slow! reads every sectors twice... +- VCD cache system... -> solved dual (A+V) streaming slowdown + +v0.86: [cleanup] +- last_frame_* thing removed + control fifo read() fixed -> better and + linear (no seek-back) resync if dvdview dies +- better nosound timing (uses -alsa timer), seeking works +- resync_to_pts eliminated (using new max_pts_correction) +- cleanups, error checks, small fixes in the whole player.c +- removed some unused old code +- exit code moved to exit_player(), removed redundancy, fixed kill order + +v0.87: +- i've found the reason of bad fps value with some vob files... + the fps is correct, but the dvdview doesn't decode all the frames + (reads repeat_first_field flag but don't rely on it) +- new demuxer code: read & demux input stream only at once, and uses two + memory FIFO-s for packages. also new reader code, everyting named ds_*() + The new demuxer can autodetect video and audio stream ids, if not + specified with -aid / -vid option, and better implementation of -afm +- vcd cache is optional (and disabled by default), because unneccesary with + new demux/streaming code + +v0.90pre: +- new codec added: mpeg2dec by Aaron Holtzman + after doing some fixes (see at bottom), it's able to play mpeg1/mpeg2 video +- FIFO API changed: after frame_complete command (0x0) the codec must + send the fps*10000 and the length*100 value. length is 1.00 for a simple + frame, and >=1 for mpeg2 fields (eliminates the fps problem) + Now, using mpeg2dec we are able to play .vob files with correct fps timing! +- better AC3 resync after seek (new func. in libac3: ac3_bitstream_reset()) + using ac3_decode_frame() instead ds_fill_buffer() when syncing PTS + +v0.90pre2: +- mpeg2dec integrated into player binary +- using pipe() instead of named pipes +- using shared memory (mmap(...MAP_ANON...)) for packet transfer to codec +- stream_select() thing removed +- some optimization in demuxer code +- measuring codec CPU usage (relative to video time!!!, so it can be >100% + on a slow system) This value must be <=100% for continous video playback. + +v0.90pre3: +- ugly bug fixed causing packet loss at codec restarting + (i wrote control_fifo instead of control_fifo2 into codec controller) +- video init part moved to the player +- using shared memory for image buffers to avoid green flashes when + codec restarted... +- new shared memory allocation code (the mmap() thing worked only with + kernel 2.4.x). thanx to LGB for the info and help... see linux/shmem.[ch] +- config.h moved, Makefiles changed a bit (added libvo path, thanx to LGB) + you may select CPU extensions (3Dnow/MMX/SSE) *only* at config.h +- meaningfull error messages if video stream cannot be synced + (many user asked about "missing video stream" error...) + +v0.90pre4: +- included new mpeg2dec source (with SSE idct code) + +v0.90pre5: +- libvo: OpenGL video renderer code by me +- included new mpeg2dec and ac3dec from today CVS snapshot +- new docs: SPEED and MTRR +- seq. head processing and video init code moved into player.c, just + before fork()'ing, so the child inherits all this info! +- removed all sequenceheader[] code, it's unneeded now +- source cleanup, removed some debug printf()'s, old comments +- EOF problem seems to be solved (maybe at the cleanup???) +- implemented bitrate (and free framerate) reading into mpeg2dec/header.c +- seeking skip times are better, based on bitrate + + +Changed in libac3 source: +~~~~~~~~~~~~~~~~~~~~~~~~~ +- ac3.h replaced with the old version from v0.6.0 +- decode.c modified to fit my interface +- stats.h: use stats_* functions only if DEBUG defined + +Changed in libmpeg2 source: +~~~~~~~~~~~~~~~~~~~~~~~~~~~ +- header.c: implemented repeat_first_field thing (see picture.repeat_count) +- HACK_MODE set to 1 (default is 0, which works only with mpeg2 streams) +- decode.c: some changes added, active only if MPG12PLAY #defined +- header.c: implemented bitrate (and free framerate) reading + +Changed in libvo source: +~~~~~~~~~~~~~~~~~~~~~~~~ +- fixed bug in mga_vid vo module: used dest_width/height instead src_* + (dst is important only for the card, we need (for memory, etc) the src size!) +- added OpenGL video renderer (based on x11 rendere and Pontscho's opengl code) + +Changed in DVDview source: +~~~~~~~~~~~~~~~~~~~~~~~~~~ +main.cc: replaced with my code +Makefile: removed unneccesary objects, added optimization flags +output/out_mgavid.cc & .hh: added double-buffering and color-keying support +system/userpack.cc & .hh: new code, by me (interface to my packet reader) +video12/vdecoder.hh: added GetSeqHeader() function (for accessing FPS value) +video12/vdecoder.cc: commented out calls to PrintDataBin() (debug info only) + +TODO: +~~~~~ +- multiple video packets (whole frame) transfer to codec - DONE +- B-frame skipping (DVD for slow systems) +- VCD support - DONE +- DVD Audio downsampling (for 44kHz cards) +- SEEKing in VOB files with AC3 sound (some hack needed in libac3) - DONE +- own AC3 frame reader -> better resync after seek - DONE +- player source is really ugly now... it's time to some cleanup - DONE? +- seek/resync without immediate SYSTEM_HEADER frames. - DONE +- end of file detecion !!! - DONE - NOT done (see matrix.vob!) - DONE +- other than 25fps movies - DONE +- test with mono sound - DONE (currently playing as stereo) +- nosound (no audio card or no audio stream) - DONE +- .vob support (non-crypted DVD/mpeg2 stream) - DONE +- AC3 and PCM audio support - DONE +- audio-only and video-only file support +- nice GUI (something new written in gtk or modify xmovie's gui) +- Xv support - DONE (libvo has it) +- easier compile, maybe new ./configure and makefiles - DONE? +- decss support (encrypted dvd) +- test speed with pgcc (does it worth?) |