mirror of https://github.com/mpv-player/mpv
233 lines
11 KiB
Plaintext
233 lines
11 KiB
Plaintext
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?)
|