summaryrefslogtreecommitdiffstats
path: root/DOCS/ChangeLog.mpeg
diff options
context:
space:
mode:
Diffstat (limited to 'DOCS/ChangeLog.mpeg')
-rw-r--r--DOCS/ChangeLog.mpeg232
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?)