rockbox/apps/plugins/mpegplayer
Jens Arnold 1f4bcc86da Revert accidental tree commit. /me needs a smaller enter key...
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@16805 a1c6a512-1295-4272-9138-f99709370657
2008-03-25 19:57:23 +00:00
..
alloc.c libmpeg2: Decode only Y on grayscale targets. The chroma skip code is probably less than optimal since it's basically the decoding code with minimum reading of the bitstream but it does the trick for now and gets some more FPS. 2008-01-16 01:22:56 +00:00
attributes.h
audio_thread.c Add a complete priority inheritance implementation to the scheduler (all mutex ownership and queue_send calls are inheritable). Priorities are differential so that dispatch depends on the runnable range of priorities. Codec priority can therefore be raised in small steps (pcmbuf updated to enable). Simplify the kernel functions to ease implementation and use the same kernel.c for both sim and target (I'm tired of maintaining two ;_). 1) Not sure if a minor audio break at first buffering issue will exist on large-sector disks (the main mutex speed issue was genuinely resolved earlier). At this point it's best dealt with at the buffering level. It seems a larger filechunk could be used again. 2) Perhaps 64-bit sims will have some minor issues (finicky) but a backroll of the code of concern there is a 5-minute job. All kernel objects become incompatible so a full rebuild and update is needed. 2008-03-25 02:34:12 +00:00
AUTHORS
decode.c libmpeg2: Decode only Y on grayscale targets. The chroma skip code is probably less than optimal since it's basically the decoding code with minimum reading of the bitstream but it does the trick for now and gets some more FPS. 2008-01-16 01:22:56 +00:00
disk_buf.c Add a complete priority inheritance implementation to the scheduler (all mutex ownership and queue_send calls are inheritable). Priorities are differential so that dispatch depends on the runnable range of priorities. Codec priority can therefore be raised in small steps (pcmbuf updated to enable). Simplify the kernel functions to ease implementation and use the same kernel.c for both sim and target (I'm tired of maintaining two ;_). 1) Not sure if a minor audio break at first buffering issue will exist on large-sector disks (the main mutex speed issue was genuinely resolved earlier). At this point it's best dealt with at the buffering level. It seems a larger filechunk could be used again. 2) Perhaps 64-bit sims will have some minor issues (finicky) but a backroll of the code of concern there is a 5-minute job. All kernel objects become incompatible so a full rebuild and update is needed. 2008-03-25 02:34:12 +00:00
disk_buf.h Initial WVS for mpegplayer. Adjusts to the user's preferred font and uses FF/RW preferences set for playback. Picked a random color for the base WVS color but it could be configured. Some engine tweaks to accomodate it since certain nescessities are clearer now. Fix a clipped YUV output bug in the SIM. 2008-01-03 17:14:28 +00:00
header.c libmpeg2: Decode only Y on grayscale targets. The chroma skip code is probably less than optimal since it's basically the decoding code with minimum reading of the bitstream but it does the trick for now and gets some more FPS. 2008-01-16 01:22:56 +00:00
idct.c Reformat and code police (tabs, trailing whitespace, annoying overuse of parentheses, etc.) in libmpeg2 so I can stomach working on it. Don't call IDCT functions through pointers - I don't feel like extracting that change just for relevance sake. 2007-12-07 13:00:31 +00:00
idct_arm.S Reformat and code police (tabs, trailing whitespace, annoying overuse of parentheses, etc.) in libmpeg2 so I can stomach working on it. Don't call IDCT functions through pointers - I don't feel like extracting that change just for relevance sake. 2007-12-07 13:00:31 +00:00
idct_coldfire.S Reformat and code police (tabs, trailing whitespace, annoying overuse of parentheses, etc.) in libmpeg2 so I can stomach working on it. Don't call IDCT functions through pointers - I don't feel like extracting that change just for relevance sake. 2007-12-07 13:00:31 +00:00
Makefile Stop wasting binary size + ram for several plugins. Plugins are supposed to be linked with --gc-sections, in case they use plugin library elements. 2008-01-04 21:07:05 +00:00
motion_comp.c Reformat and code police (tabs, trailing whitespace, annoying overuse of parentheses, etc.) in libmpeg2 so I can stomach working on it. Don't call IDCT functions through pointers - I don't feel like extracting that change just for relevance sake. 2007-12-07 13:00:31 +00:00
motion_comp.h mpeg2dec in mpegplayer: Do a little code slashing and organizing. Much more to come I think. 2007-04-14 16:35:44 +00:00
motion_comp_arm_c.c mpeg2dec in mpegplayer: Do a little code slashing and organizing. Much more to come I think. 2007-04-14 16:35:44 +00:00
motion_comp_arm_s.S mpeg2dec in mpegplayer: Do a little code slashing and organizing. Much more to come I think. 2007-04-14 16:35:44 +00:00
motion_comp_c.c Woops forgot a file 2007-04-14 16:55:40 +00:00
motion_comp_coldfire_c.c Mpegplayer: Assembler optimised motion compensation for coldfire (just the variants that are assemblerised for ARM) for a nice speedup. 2007-10-17 15:46:09 +00:00
motion_comp_coldfire_s.S Mpegplayer: Assembler optimised motion compensation for coldfire (just the variants that are assemblerised for ARM) for a nice speedup. 2007-10-17 15:46:09 +00:00
mpeg2.h libmpeg2: Decode only Y on grayscale targets. The chroma skip code is probably less than optimal since it's basically the decoding code with minimum reading of the bitstream but it does the trick for now and gets some more FPS. 2008-01-16 01:22:56 +00:00
mpeg2_internal.h libmpeg2: Decode only Y on grayscale targets. The chroma skip code is probably less than optimal since it's basically the decoding code with minimum reading of the bitstream but it does the trick for now and gets some more FPS. 2008-01-16 01:22:56 +00:00
mpeg2dec_config.h libmpeg2: Change a couple style points for consistency and some spacing. 2008-01-16 01:43:31 +00:00
mpeg_alloc.h mpegplayer: Make playback engine fully seekable and frame-accurate and split into logical parts. Be sure to have all current features work. Actual UI for seeking will be added soon. Recommended GOP size is about 15-30 frames depending on target or seeking can be slow with really long GOPs (nature of MPEG video). More refined encoding recommendations for a particular player should be posted soon. 2007-12-29 19:46:35 +00:00
mpeg_linkedlist.c mpegplayer: Make playback engine fully seekable and frame-accurate and split into logical parts. Be sure to have all current features work. Actual UI for seeking will be added soon. Recommended GOP size is about 15-30 frames depending on target or seeking can be slow with really long GOPs (nature of MPEG video). More refined encoding recommendations for a particular player should be posted soon. 2007-12-29 19:46:35 +00:00
mpeg_linkedlist.h mpegplayer: Make playback engine fully seekable and frame-accurate and split into logical parts. Be sure to have all current features work. Actual UI for seeking will be added soon. Recommended GOP size is about 15-30 frames depending on target or seeking can be slow with really long GOPs (nature of MPEG video). More refined encoding recommendations for a particular player should be posted soon. 2007-12-29 19:46:35 +00:00
mpeg_misc.c mpegplayer: Make playback engine fully seekable and frame-accurate and split into logical parts. Be sure to have all current features work. Actual UI for seeking will be added soon. Recommended GOP size is about 15-30 frames depending on target or seeking can be slow with really long GOPs (nature of MPEG video). More refined encoding recommendations for a particular player should be posted soon. 2007-12-29 19:46:35 +00:00
mpeg_misc.h mpegplayer: Use the core DSP to process audio. Removes the sample rate restriction on audio and any mpeg audio samplerate may be used. Use the global sound settings for audio output with the option to force any one of the processing stages off. All are forced off by default. I didn't personally care to fully duplicate the Sound Settings menu which would have been needed since using the core one would affect settings globally and exactly the same configuration probably isn't desired since the CPU load for video playback is much greater. Rebalance the threading to compensate with some expense to buffering speed. 2008-02-01 02:25:15 +00:00
mpeg_parser.c mpegplayer: End of data would not be detected correctly if mpeg parser was in a sync state. 2008-01-27 00:06:36 +00:00
mpeg_settings.c Revert accidental tree commit. /me needs a smaller enter key... 2008-03-25 19:57:23 +00:00
mpeg_settings.h mpegplayer: Use the core DSP to process audio. Removes the sample rate restriction on audio and any mpeg audio samplerate may be used. Use the global sound settings for audio output with the option to force any one of the processing stages off. All are forced off by default. I didn't personally care to fully duplicate the Sound Settings menu which would have been needed since using the core one would affect settings globally and exactly the same configuration probably isn't desired since the CPU load for video playback is much greater. Rebalance the threading to compensate with some expense to buffering speed. 2008-02-01 02:25:15 +00:00
mpeg_stream.h mpegplayer: Make playback engine fully seekable and frame-accurate and split into logical parts. Be sure to have all current features work. Actual UI for seeking will be added soon. Recommended GOP size is about 15-30 frames depending on target or seeking can be slow with really long GOPs (nature of MPEG video). More refined encoding recommendations for a particular player should be posted soon. 2007-12-29 19:46:35 +00:00
mpegplayer.c Revert accidental tree commit. /me needs a smaller enter key... 2008-03-25 19:57:23 +00:00
mpegplayer.h mpegplayer: Use the core DSP to process audio. Removes the sample rate restriction on audio and any mpeg audio samplerate may be used. Use the global sound settings for audio output with the option to force any one of the processing stages off. All are forced off by default. I didn't personally care to fully duplicate the Sound Settings menu which would have been needed since using the core one would affect settings globally and exactly the same configuration probably isn't desired since the CPU load for video playback is much greater. Rebalance the threading to compensate with some expense to buffering speed. 2008-02-01 02:25:15 +00:00
parser.h mpegplayer: Make playback engine fully seekable and frame-accurate and split into logical parts. Be sure to have all current features work. Actual UI for seeking will be added soon. Recommended GOP size is about 15-30 frames depending on target or seeking can be slow with really long GOPs (nature of MPEG video). More refined encoding recommendations for a particular player should be posted soon. 2007-12-29 19:46:35 +00:00
pcm_output.c mpegplayer: Use the core DSP to process audio. Removes the sample rate restriction on audio and any mpeg audio samplerate may be used. Use the global sound settings for audio output with the option to force any one of the processing stages off. All are forced off by default. I didn't personally care to fully duplicate the Sound Settings menu which would have been needed since using the core one would affect settings globally and exactly the same configuration probably isn't desired since the CPU load for video playback is much greater. Rebalance the threading to compensate with some expense to buffering speed. 2008-02-01 02:25:15 +00:00
pcm_output.h mpegplayer: Use the core DSP to process audio. Removes the sample rate restriction on audio and any mpeg audio samplerate may be used. Use the global sound settings for audio output with the option to force any one of the processing stages off. All are forced off by default. I didn't personally care to fully duplicate the Sound Settings menu which would have been needed since using the core one would affect settings globally and exactly the same configuration probably isn't desired since the CPU load for video playback is much greater. Rebalance the threading to compensate with some expense to buffering speed. 2008-02-01 02:25:15 +00:00
README
README.rockbox
slice.c libmpeg2: Change a couple style points for consistency and some spacing. 2008-01-16 01:43:31 +00:00
SOURCES mpegplayer: Make playback engine fully seekable and frame-accurate and split into logical parts. Be sure to have all current features work. Actual UI for seeking will be added soon. Recommended GOP size is about 15-30 frames depending on target or seeking can be slow with really long GOPs (nature of MPEG video). More refined encoding recommendations for a particular player should be posted soon. 2007-12-29 19:46:35 +00:00
stream_mgr.c Add a complete priority inheritance implementation to the scheduler (all mutex ownership and queue_send calls are inheritable). Priorities are differential so that dispatch depends on the runnable range of priorities. Codec priority can therefore be raised in small steps (pcmbuf updated to enable). Simplify the kernel functions to ease implementation and use the same kernel.c for both sim and target (I'm tired of maintaining two ;_). 1) Not sure if a minor audio break at first buffering issue will exist on large-sector disks (the main mutex speed issue was genuinely resolved earlier). At this point it's best dealt with at the buffering level. It seems a larger filechunk could be used again. 2) Perhaps 64-bit sims will have some minor issues (finicky) but a backroll of the code of concern there is a 5-minute job. All kernel objects become incompatible so a full rebuild and update is needed. 2008-03-25 02:34:12 +00:00
stream_mgr.h Now that headphone plug pause/resume should be better behaved, support it in mpegplayer too. 2008-01-27 21:45:15 +00:00
stream_thread.h Greyscale mpegplayer: * Use uncached greyscale buffers on dual core targets, removing the need for special cache handling. * Make the OSD properly disappear when viewing a widescreen or small video. 2008-01-11 00:46:09 +00:00
video_out.h mpegplayer on grayscale targets: use greylib to display all text and graphics with the video images. 2008-01-09 22:19:25 +00:00
video_out_rockbox.c Consistent naming scheme the various blit functions. * Removed lcd_blit_mono() for colour targets. Plugin API became incompatible, so sort, clean up & bump. * Implemented lcd_blit_mono() for M3. 2008-03-24 00:35:53 +00:00
video_thread.c Add a complete priority inheritance implementation to the scheduler (all mutex ownership and queue_send calls are inheritable). Priorities are differential so that dispatch depends on the runnable range of priorities. Codec priority can therefore be raised in small steps (pcmbuf updated to enable). Simplify the kernel functions to ease implementation and use the same kernel.c for both sim and target (I'm tired of maintaining two ;_). 1) Not sure if a minor audio break at first buffering issue will exist on large-sector disks (the main mutex speed issue was genuinely resolved earlier). At this point it's best dealt with at the buffering level. It seems a larger filechunk could be used again. 2) Perhaps 64-bit sims will have some minor issues (finicky) but a backroll of the code of concern there is a 5-minute job. All kernel objects become incompatible so a full rebuild and update is needed. 2008-03-25 02:34:12 +00:00
vlc.h Reformat and code police (tabs, trailing whitespace, annoying overuse of parentheses, etc.) in libmpeg2 so I can stomach working on it. Don't call IDCT functions through pointers - I don't feel like extracting that change just for relevance sake. 2007-12-07 13:00:31 +00:00


ABOUT LIBMPEG2

libmpeg2 is a free library for decoding mpeg-2 and mpeg-1 video
streams. It is released under the terms of the GPL license.

The main goals in libmpeg2 development are:

      *	Conformance - libmpeg2 is able to decode all mpeg streams that
	conform to certain restrictions: "constrained parameters" for
	mpeg-1, and "main profile" for mpeg-2. In practice, this is
	what most people are using. For streams that follow these
	restrictions, we believe libmpeg2 is 100% conformant to the
	mpeg standards - and we have a pretty extensive test suite to
	check this.

      *	Speed - there has been huge efforts there, and we believe
	libmpeg2 is the fastest library around for what it
	does. Please tell us if you find a faster one ! With typical
	video streams as found on DVD's, and doing only decoding with
	no display, you should be able to get about 110 fps on a
	PIII/666, or 150 fps on an Athlon/950. This is less than 20
	cycles per output pixel. In a real player program, the display
	routines will probably take as much time as the actual
	decoding !

      *	Portability - most of the code is written in C, and when we
	use platform-specific optimizations (typically assembly
	routines, currently used for the motion compensation and the
	inverse cosine transform stages) we always have a generic C
	routine to fall back on.  This should be portable to all
	architectures - at least we have heard reports from people
	running this code on x86, ppc, sparc, arm and
	sh4. Assembly-optimized implementations are available on x86
	(MMX) and ppc (altivec) architectures. Ultrasparc (VIS) is
	probably the next on the list - we'll see.

      *	Reuseability - we do not want libmpeg2 to include any
	project-specific code, but it should still include enough
	features to be used by very diverse projects. We are only
	starting to get there - the best way to help here is to give
	us some feedback !

The project homepage is at http://libmpeg2.sourceforge.net/


MPEG2DEC

mpeg2dec is a test program for libmpeg2. It decodes mpeg-1 and mpeg-2
video streams, and also includes a demultiplexer for mpeg-1 and mpeg-2
program streams. It is purposely kept simple : it does not include
features like reading files from a DVD, CSS, fullscreen output,
navigation, etc... The main purpose of mpeg2dec is to have a simple
test bed for libmpeg2.

The libmpeg2 source code is always distributed in the mpeg2dec
package, to make it easier for people to test it.

The basic usage is to just type "mpeg2dec file" where file is a
demultiplexed mpeg video file.

The "-s" option must be used for multiplexed (audio and video) mpeg
files using the "program stream" format. These files are usualy found
on the internet or on unencrypted DVDs.

The "-t" option must be used for multiplexed (audio and video) mpeg
files using the "transport stream" format. These files are usualy
found in digital TV applications.

The "-o" option is used to select a given output module - for example
to redirect the output to a file. This is also used for performance
testing and conformance testing.

The "-c" option is used to disable all optimizations.


OTHER PROJECTS USING LIBMPEG2

libmpeg2 is being used by various other projects, including:

      *	xine (http://xine.sourceforge.net/) - started as a simple
	mpeg-2 audio and video decoder, but it since became a
	full-featured DVD and video media player.

      *	VideoLAN (http://www.videolan.org/) - video streaming over an
	ethernet network, can also be used as a standalone player.

      *	MPlayer (http://www.MPlayerHQ.hu) - another good player, it is
	also very robust against damaged streams.

      *	movietime (http://movietime.sourceforge.net/) - still quite
	young, but it looks very promising !

      *	mpeg2decX (http://homepage1.nifty.com/~toku/software_en.html) -
	a graphical interface for mpeg2dec for macintosh osX.

      *	TCVP (http://tcvp.sf.net) - video and music player for unix.

      *	drip (http://drip.sourceforge.net/) - a DVD to DIVX transcoder.

      *	PoMP
	(http://www.dmclab.hanyang.ac.kr/research/project/PoDS/PoDS_sw.htm) -
	a research player optimized to minimize disk power consumption.

      *	OMS (http://www.linuxvideo.org/oms/)

      *	XMPS (http://xmps.sourceforge.net/)

      *	GStreamer (http://www.gstreamer.net/) - a framework for
	streaming media; it has an mpeg2 decoding plugin based on
	libmpeg2.

      *	mpeglib (http://mpeglib.sourceforge.net/) - a video decoding
	library that usess libmpeg2 when decoding mpeg streams.

      *	daphne (http://daphne.rulecity.com/) - a laserdisc arcade game
	simulator.

      *	GOPchop (http://outflux.net/unix/software/GOPchop/) - a
	GOP-accurate editor for MPEG2 streams.

If you use libmpeg2 in another project, let us know !


TASKS

There are several places where we could easily use some help:

      *	Documentation: libmpeg2 still has no documentation. Every
	project using it has had to figure things out by looking at
	the header files, at the mpeg2dec sample application, and by
	asking questions. Writing down a nice documentation would make
	the code more easily reuseable.

      *	Testing: If you find any stream that does not decode right
	with libmpeg2, let us know ! The best thing would be to mail
	to the libmpeg2-devel mailing list. Also, it would be nice to
	build a stress test so we can make sure libmpeg2 never crashes
	on bad streams.

      *	Coding: There is a small TODO list in the mpeg2dec package,
	you can have a look there ! Most items are pretty terse
	though.

      *	Porting: If you're porting to a new architecture, you might
	want to experiment with the compile flags defined in
	configure.in . When you figure out whats fastest on your
	platform, send us a patch !

      *	Assembly optimizations: We only have x86 and altivec
	optimizations yet, it would be worthwhile writing routines for
	other architectures, especially those that have SIMD
	instruction set extensions ! Also the yuv2rgb x86 routines
	could probably be optimized a lot.


CVS SNAPSHOTS

A daily snapshot is created using "make distcheck" every night and
uploaded to http://libmpeg2.sourceforge.net/files/mpeg2dec-snapshot.tar.gz .
It is easier to use than the CVS repository, because you do not need
to have the right versions of automake, autoconf and libtool
installed. It might be convenient when working on a libmpeg2 port for
example.


CVS REPOSITORY

The latest libmpeg2 and mpeg2dec source code can always be found by
anonymous CVS:

# export CVSROOT=:pserver:anonymous@cvs.libmpeg2.sourceforge.net:/cvsroot/libmpeg2
# cvs login (Just press Return when prompted for a password)
# cvs checkout mpeg2dec

You can also browse the latest changes online at
http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/libmpeg2/mpeg2dec/

The other CVS modules are mpeg2dec-streams for the test suite, and
mpeg2dec-livid for the CVS history of the project while it was still
hosted on the linuxvideo.org servers.


MAILING LISTS

See the subscription information at http://libmpeg2.sourceforge.net/lists.html

libmpeg2-devel

This is the main mailing list for technical discussion about
libmpeg2. Anyone wanting to work on libmpeg2, or maybe just stay
informed about the development process, should probably subscribe to
this list.

libmpeg2-checkins

All libmpeg2 checkins are announced there. This is a good way to keep
track of what goes into CVS.

libmpeg2-announce

This is a very low traffic mailing list, only for announcements of new
versions of libmpeg2. Only project administrators can post there.