Commit Graph

1022 Commits

Author SHA1 Message Date
Clément Bœsch 9bcfbe4d4f find_subfiles: move sub_filenames() here
Move sub_filenames() and related code from subreader.c to new file
find_subfiles.c. This function is used to find subtitle files that
should be loaded for the current video; this functionality is not
specific to the particular kind of text subtitle handling implemented
in subreader.c.

Also reindent and prettify the moved code a bit.
2011-04-20 04:22:52 +03:00
Uoti Urpala 9ef15ac4fc Merge branch 'edl'
* edl:
  core: support timeline with audio-only files
  core: wake up a bit less often for audio-only files
  core: audio: cut audio writes at end of timeline part
  EDL: add support for new EDL file format
  stream.[ch], ass_mp: new stream function for whole-file reads
  tl_matroska.c: move the find_files() function here
  bstr.[ch], path.[ch]: add string and path handling functions
  core: ordered chapters: move timeline creation to timeline/
  options: drop support for numeric -demuxer values
  cleanup: demuxer.[ch]: remove unused code, make functions static
  cleanup: reindent demuxer.h, use struct names for types
2011-04-08 22:50:06 +03:00
Uoti Urpala 968154ba77 EDL: add support for new EDL file format
The timeline code previously added to support Matroska ordered
chapters allows constructing a playback timeline from segments picked
from multiple source files. Add support for a new EDL format to make
this machinery available for use with file formats other than Matroska
and in a manner easier to use than creating files with ordered
chapters.

Unlike the old -edl option which specifies an additional file with
edits to apply to the video file given as the main argument, the new
EDL format is used by giving only the EDL file as the file to play;
that file then contains the filename(s) to use as source files where
actual video segments come from. Filename paths in the EDL file are
ignored. Currently the source files are only searched for in the
directory of the EDL file; support for a search path option will
likely be added in the future.

Format of the EDL files

The first line in the file must be "mplayer EDL file, version 2".
The rest of the lines belong to one of these classes:
1) lines specifying source files
2) empty lines
3) lines specifying timeline segments.

Lines beginning with '<' specify source files. These lines first
contain an identifier used to refer to the source file later, then the
filename separated by whitespace. The identifier must start with a
letter. Filenames that start or end with whitespace or contain
newlines are not supported.

On other lines '#' characters delimit comments. Lines that contain
only whitespace after comments have been removed are ignored.

Timeline segments must appear in the file in chronological order. Each
segment has the following information associated with it:
- duration
- output start time
- output end time (= output start time + duration)
- source id (specifies the file the content of the segment comes from)
- source start time (timestamp in the source file)
- source end time (= source start time + duration)
The output timestamps must form a continuous timeline from 0 to the
end of the last segment, such that each new segment starts from the
time the previous one ends at. Source files and times may change
arbitrarily between segments.

The general format for lines specifying timeline segments is
[output time info] source_id [source time info]
source_id must be an identifier defined on a '<' line. Both the time
info parts consists of zero or more of the following elements:
1) timestamp
2) -timestamp
3) +duration
4) *
5) -*
, where "timestamp" and "duration" are decimal numbers (computations
are done with nanosecond precision). Whitespace around "+" and "-" is
optional. 1) and 2) specify start and end time of the segment on
output or source side. 3) specifies duration; the semantics are the
same whether this appears on output or source side. 4) and 5) are
ignored on the output side (they're always implicitly assumed). On the
source side 4) specifies that the segment starts where the previous
segment _using this source_ ended; if there was no previous segment
time 0 is used. 5) specifies that the segment ends where the next
segment using this source starts.

Redundant information may be omitted. It will be filled in using the
following rules:
- output start for first segment is 0
- two of [output start, output end, duration] imply third
- two of [source start, source end, duration] imply third
- output start = output end of previous segment
- output end = output start of next segment
- if "*", source start = source end of earlier segment
- if "-*", source end = source start of a later segment

As a special rule, a last zero-duration segment without a source
specification may appear. This will produce no corresponding segment
in the resulting timeline, but can be used as syntax to specify the
end time of the timeline (with effect equal to adding -time on the
previous line).

Examples:
----- begin -----
mplayer EDL file, version 2
< id1 filename

  0 id1 123
100 id1 456
200 id1 789
300
-----  end  -----
All segments come from the source file "filename". First segment
(output time 0-100) comes from time 123-223, second 456-556, third
789-889.

----- begin -----
mplayer EDL file, version 2
< f filename
f  60-120
f 600-660
f  30- 90
-----  end  -----
Play first seconds 60-120 from the file, then 600-660, then 30-90.

----- begin -----
mplayer EDL file, version 2
< id1 filename1
< id2 filename2

+10 id1 *
+10 id2 *
+10 id1 *
+10 id2 *
+10 id1 *
+10 id2 *
-----  end  -----
This plays time 0-10 from filename1, then 0-10 from filename1, then
10-20 from filename1, then 10-20 from filename2, then 20-30 from
filename1, then 20-30 from filename2.

----- begin -----
mplayer EDL file, version 2
< t1 filename1
< t2 filename2

t1 * +2            # segment 1
+2 t2 100          # segment 2
t1 *               # segment 3
t2 *-*             # segment 4
t1 3 -*            # segment 5
+0.111111 t2 102.5 # segment 6
7.37 t1 5 +1       # segment 7
-----  end  -----
This rather pathological example illustrates the rules for filling in
implied data. All the values can be determined by recursively applying
the rules given above, and the full end result is this:
+2         0-2                 t1  0-2              # segment 1
+2         2-4                 t2  100-102          # segment 2
+0.758889  4-4.758889          t1  2-2.758889       # segment 3
+0.5       4.4758889-5.258889  t2  102-102.5        # segment 4
+2         5.258889-7.258889   t1  3-5              # segment 5
+0.111111  7.258889-7.37       t2  102.5-102.611111 # segment 6
+1         7.37-8.37           t1  5-6              # segment 7
2011-04-05 06:26:17 +03:00
Uoti Urpala f9b5f2870c mp3lib: drop internal mp3lib tree
Delete mp3lib which has been the default mp3 decoder until now. In
addition to being an unnecessary embedded library it now fails to
compile correctly with the new gcc-4.6, producing noise.

After the deletion the default decoder priority for mp3 will be first
libmpg123 (a newer version of the code that mp3lib was based on) if
available, then ffmp3float which should be available in all normal
compiles. I think that some tweaking may be required as these decoder
alternatives get wider testing, but any problems should be solvable
and there should be no need for mp3lib.
2011-04-02 07:28:53 +03:00
Uoti Urpala 85f4633796 demux_ty: disable -subcc functionality (demux_ty_osd)
Disable compilation of demux_ty_osd.c because of its GPL v2-only
license. This only affects TiVo files with -subcc. After this no
v2-only code should get compiled (yuv4mpeg_intern.h has a v2-only
license, but the contents of the header look like they're not
copyrightable).
2011-03-24 22:23:12 +02:00
Uoti Urpala 5e0a163886 tl_matroska.c: move the find_files() function here
Move the find_files() function from findfiles.c to tl_matroska.c.
Delete the findfiles.c file. Add a check against opendir() failure in
find_files().
2011-03-03 21:38:52 +02:00
Uoti Urpala e8af22db81 core: ordered chapters: move timeline creation to timeline/
Add new file timeline/tl_matroska.c. Move the code that parses
ordered chapter information from Matroska files and creates the
timeline structure based on that to the new file.

Initialize the format parameter given to open_stream() in the moved
code. The previous uninitialized value shouldn't have caused any
visible effects.
2011-02-26 16:34:42 +02:00
Uoti Urpala e786c70de9 build: change version number generation
Force Makefile to always run version.sh to potentially regenerate
version.h. Drop compiler version and 'git-' prefix from version
number. Match only git tags starting 'v'+number when generating
version number; leave the 'v' out from the result.
2011-02-19 19:07:12 +02:00
Uoti Urpala 6122d83981 tremor: drop internal tremor library
Drop internal copy of the tremor library. Note that the internal ogg
demuxer (which is still sometimes useful to work around libavformat
ogg demuxer problems, though it's itself quite buggy) now cannot be
compiled without either external libvorbis or libvorbisidec (tremor).
2011-02-01 21:28:03 +02:00
Uoti Urpala 7cd7416c73 libmpeg2: drop libmpeg2 support
libavcodec mpeg2 decoder has been the default for a while and seems to
work fine.
2011-02-01 20:10:27 +02:00
Uoti Urpala 626d5ed628 vo_zr2: drop Zoran support
There were multiple files specific to Zoran support, and they also
depended on internal FFmpeg headers (so it would probably have been
hard to get them to compile now even if you tried). It's obsolete now,
so just drop the whole mess.
2011-01-31 16:03:11 +02:00
Uoti Urpala b138ca43ca vo_dxr2, ao_dxr2: drop dxr2 support
dxr2 support had been broken quite a while and nobody noticed. There
were finally commits to fix it in the svn repo, but rather than apply
those I'll just drop dxr2 support.
2011-01-31 16:03:10 +02:00
Uoti Urpala 6d534cd3cb vidix: drop VIDIX support
By now VIDIX is too obscure to justify the amount of code and
complexity it requires in the sources. Although there is no pressing
need to drop it just now from a code point of view, I'll rather remove
it before release than release with VIDIX support and then drop it
later.

Some of the manpage mentions of VIDIX were in "this option supported
for these VOs" lists that looked outdated and failed to mention vdpau
for example. Replace such incorrect lists with a generic "not
supported for all VOs" mention.
2011-01-31 16:03:10 +02:00
diego 42ed53f221 libfaad2:/ Remove forked internal libfaad2 copy
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@32741 b3059339-0415-0410-9bf9-f77b7e298cf2

Remove AAC/FAAD2 installation instructions.

There is nothing special about building and installing FAAD2, so there is
no longer a need to keep maintaining instructions for it.

git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@32742 b3059339-0415-0410-9bf9-f77b7e298cf2
2011-01-31 16:00:58 +02:00
Uoti Urpala f50f34245e Merge branch 'sub'
* sub:
  sub/OSD: move some related files to sub/
  subtitles: options: enable -ass by default
  subtitles: change default libass rendering style
  demux_mkv, chapters: change millisecond arithmetic to ns
  cleanup: rename ass_* functions to mp_ass_*
  subs: use correct font aspect ratio for libass + converted subs
  cleanup: some random minor code simplification and cleanup
  vf_vo: fix EOSD change detection bug
  sd_ass: remove subreader use, support plaintext markup
  subtitles: style support for common SubRip tags and MicroDVD
  core: ordered chapters: fix bad subtitle parameter
  subs/demux: don't try to enable sub track when creating it
  subtitles/demux: store duration instead of endpts in demux packets
  subtitles: add framework for subtitle decoders
  options: add special -leak-report option
  subtitles: remove code trying to handle text subs with libavcodec
  cleanup: move MP_NOPTS_VALUE definition to mpcommon.h
  subtitles: move global ass_track to struct osd_state
  core: move most mpcommon.c contents to mplayer.c
  core: move global "subdata" and "vo_sub_last" to mpctx
  subtitles: remove sub_last_pts hack
  options: move -noconfig to option struct, simplify
2011-01-26 20:42:15 +02:00
Uoti Urpala c9026cb321 sub/OSD: move some related files to sub/ 2011-01-26 20:39:05 +02:00
Clément Bœsch b16a8fa406 configure: remove MEncoder-related options and tests
Also remove one MEncoder variable reference from TOOLS/vivodump rule
in Makefile.
2011-01-25 02:18:06 +02:00
Uoti Urpala 4284cf9ef0 subtitles: style support for common SubRip tags and MicroDVD
SubRip subtitles have no "official" spec for any styling support, but
various tags are in common use; previous code filtered out text
between <> to remove HTML-style tags. Add support for those tags and
for MicroDVD subtitle styling. The style display is implemented by
converting the subtitles to the ASS subtitle format and displaying
them with libass, so libass needs to be enabled.

Original patch by Clément Bœsch <ubitux@gmail.com>.
2011-01-18 15:17:28 +02:00
Uoti Urpala e990fb2ffe subtitles: add framework for subtitle decoders
Add a framework for subtitle decoder modules that work more like
audio/video decoders do, and change libass rendering of demuxed
subtitles to use the new framework.

The old subtitle code is messy, with details specific to handling
particular subtitle types spread over high-level code. This should
make it easier to clean things up and fix some bugs/limitations.
2011-01-18 14:58:09 +02:00
Uoti Urpala 2bc2399797 vd_ffmpeg: set thread count to number of cores on machine by default
Make "-lavdopts threads=0" mean an autodetected number of threads, and
make that the default value of the option. Also increase the upper
limit of the option from 8 to 16. Add new file osdep/numcores.c which
tries to determine the number of cores available on the machine.

numcores.c is based (heavily modified) on public domain numcpus.c by
Philip Willoughby <pgw99@doc.ic.ac.uk>, downloaded from
http://csgsoft.doc.ic.ac.uk/numcpus/
2010-12-20 05:53:28 +02:00
Uoti Urpala d707da9e65 build: enable vf_geq if libavutil version installs eval.h
New enough libavutil versions allow building vf_geq.c without
requiring internal FFmpeg headers.
2010-11-06 23:29:07 +02:00
Uoti Urpala be95d4c131 Makefile: enable .DELETE_ON_ERROR special target
msgfmt creates the output file even if there was a fatal error. Thus
make would stop because of the error return, but the output file would
be left on disk and running make again would continue building other
files. Enable the .DELETE_ON_ERROR special target to automatically
delete target files changed by failing commands. This affects all
rules; I think it is the correct behavior for all existing rules.
2010-11-04 01:30:42 +02:00
Uoti Urpala 34454cfcd1 Makefile: remove generated locale files in clean target 2010-11-04 00:42:46 +02:00
reimar c69e262a62 vf_stereo3d: Add stereo3d filter
Further review very welcome, but it is time (and good enough) to add this.

Patch by Gordon Schmidt [gordon.schmidt s2000.tu-chemnitz de] with
changes by Endre Kollár [taxy443 gmail com].

git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@32527 b3059339-0415-0410-9bf9-f77b7e298cf2
2010-11-02 07:48:40 +02:00
cigaes ce9fcc0730 vo_gl: Move the read_pnm function into a separate file
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@32513 b3059339-0415-0410-9bf9-f77b7e298cf2
2010-11-02 04:18:37 +02:00
diego 45e1333581 Makefile: don't list dependencies for codec-cfg.d
The file is now generated as a side effect of compilation.

git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@32355 b3059339-0415-0410-9bf9-f77b7e298cf2
2010-11-02 04:18:07 +02:00
diego a9131fefe4 Makefile: Remove __USE_UNIX98 from libdvd* CFLAGS
This is an internal glibc symbol that should not be used directly.
Besides, other CFLAGS already take care of enabling single Unix v2.

git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@32348 b3059339-0415-0410-9bf9-f77b7e298cf2
2010-11-02 04:18:07 +02:00
diego c6097fd5f6 Makefile: Do not compile libfaad2 with -D_GNU_SOURCE
It is not necessary and libfaad2 itself does not do it either.

git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@32344 b3059339-0415-0410-9bf9-f77b7e298cf2
2010-11-02 04:18:07 +02:00
diego 06e7123bbe Makefile: Drop separate compilation rules for dhahelperwin files
The generic rules should work just as well.

git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@32333 b3059339-0415-0410-9bf9-f77b7e298cf2
2010-11-02 04:18:07 +02:00
diego bd2189a814 Makefile: Merge dhahelperwinclean and dhahelperclean targets
There is no need to have them separate; in other clean rules we
make an effort to clean up all platforms at the same time.

git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@32331 b3059339-0415-0410-9bf9-f77b7e298cf2
2010-11-02 04:18:07 +02:00
diego baf7744d53 Makefile: Remove remnants of explicit dependency file generation
Dependency files are now generated as a side effect of compilation,
and have no independent creation rules.

git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@32327 b3059339-0415-0410-9bf9-f77b7e298cf2
2010-11-02 04:17:05 +02:00
diego 908b80e21c Makefile: Fix osdep/mplayer.rc.o vs. osdep/mplayer-rc.o typo
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@32326 b3059339-0415-0410-9bf9-f77b7e298cf2
2010-11-02 04:17:04 +02:00
diego d5fc361dd8 Makefile: read dependency files for assembler files too
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@32321 b3059339-0415-0410-9bf9-f77b7e298cf2
2010-11-02 04:17:04 +02:00
diego 80c21dd312 Makefile: Rename DEPS variable to DEP_FILES
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@32320 b3059339-0415-0410-9bf9-f77b7e298cf2
2010-11-02 04:17:04 +02:00
diego 868fb5d278 build: update DirectFB requirements, reduce #ifdefs
Require DirectFB version 0.9.15 instead of 0.9.13.
This simplifies the build system at the cost of requiring a library
version that was released at the end rather than the middle of 2002.

git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@32251 b3059339-0415-0410-9bf9-f77b7e298cf2

Simplify DirectFB check.

git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@32252 b3059339-0415-0410-9bf9-f77b7e298cf2

Require DirectFB version 0.9.22.
This allows getting rid of a lot of library version check #ifdeffery.
Release 0.9.22 is from February 2005, so the requirement is reasonable.

git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@32253 b3059339-0415-0410-9bf9-f77b7e298cf2
2010-11-02 04:16:55 +02:00
Uoti Urpala db59b85fed Makefile: remove obsolete DIRS list entries 2010-11-02 04:16:55 +02:00
Uoti Urpala c5e462b33d build: enable/disable all FFmpeg libraries together
Enable all of libavcodec, libavformat, libswscale, and libpostproc
together (libavutil is always required).

based on svn commit by diego:

git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@32226 b3059339-0415-0410-9bf9-f77b7e298cf2
2010-11-02 04:16:55 +02:00
Uoti Urpala 389c32b5c7 Remove MEncoder
Disable MEncoder compilation and remove files used by MEncoder
only. There's no attempt to remove all references to MEncoder from the
build system, documentation etc at this point.

Removed files: (muxers, audio/video encoders, misc)

mencoder.c
cfg-mencoder.h
parser-mecmd.[ch]
xvid_vbr.[ch]
libmpdemux/muxer*
libmpcodecs/ae*
libmpcodecs/ve*
libmpcodecs/native/rtjpegn.[ch]
libmpcodecs/native/mmx.h   // was used by rtjpegn only

Rationale:

MEncoder is still useful for some people, but there's not much
potential for further development; in the long run almost all use
cases can be handled better by solutions based on something else (for
example using FFmpeg or encoding MPlayer output). FFmpeg is already
getting video filtering support which should work for some common
MEncoder uses.

Keeping MEncoder working takes extra work that is away from player
development. While that amount of work is not huge (mostly MEncoder
can be just ignored), it's not completely insignificant either.

MEncoder is still maintained to some degree in the svn tree, so if
necessary it's possible to use it from there for now. This tree has
never had major improvements for the MEncoder side, so using svn
MEncoder instead should be no major loss.
2010-11-02 04:16:55 +02:00
Uoti Urpala 62112dedb0 enable vo_mga, vo_xmga, vf_palette, vf_halfpack
Nothing should depend on libswscale internals any more, so re-enable
everything. vf_palette and vf_halfpack were actually fixed earlier but
were not properly enabled.
2010-11-02 04:16:45 +02:00
Uoti Urpala a92b4adf61 Makefile: remote obsolete dep/depend targets, mark "locales" phony 2010-11-02 04:15:50 +02:00
diego ed3a57ae28 Makefile: Move header compilation rules to the bottom of the rules list
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@32042 b3059339-0415-0410-9bf9-f77b7e298cf2
2010-11-02 04:15:50 +02:00
diego e66b13ab65 Makefile: remove distclean hack for dependency files
Remove hack that skips including dependency files on distclean.
Now that dependency files are generated as a sideeffect of compilation this
workaround is no longer needed since distclean no longer tries to create them.

git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@31969 b3059339-0415-0410-9bf9-f77b7e298cf2
2010-11-02 04:15:49 +02:00
diego 578ad534b3 configure: Rename "network" variable and option to "networking"
This avoids conflicts with the FFmpeg variable of the same name.

git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@31749 b3059339-0415-0410-9bf9-f77b7e298cf2
2010-11-02 04:14:44 +02:00
reimar 96c17fe68b subs: Add support for PGS subtitle decoding via libavcodec
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@31665 b3059339-0415-0410-9bf9-f77b7e298cf2
2010-11-02 04:14:43 +02:00
reimar 6c3c1588f5 libgsm: Remove libgsm wrapper
Remove copy of old and ugly libgsm code and wrapper.
Decoding these formats is supported via FFmpeg both natively and
through libgsm.

git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@31657 b3059339-0415-0410-9bf9-f77b7e298cf2

git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@31664 b3059339-0415-0410-9bf9-f77b7e298cf2
2010-11-02 04:14:22 +02:00
ben 6704008a46 stream_bluray: add unencrypted Blu-ray playback
Support for unencrypted Blu-ray playback through libbluray.
Use it through: mplayer br:////path/to/disc

git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@31631 b3059339-0415-0410-9bf9-f77b7e298cf2
2010-11-02 04:14:20 +02:00
reimar 95751ea3e4 Windows support: add a manifest file
Add a manifest file to disable file and registry "virtualization" on
Windows.

git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@31630 b3059339-0415-0410-9bf9-f77b7e298cf2
2010-11-02 04:14:20 +02:00
diego 853dc929e4 configure: Separate dependency flags from general CFLAGS
Before, there was an unfortunate interaction with 'make checkheaders':
Compiling a .h file would generate a .d dependency information file for
that .h file as a sideeffect of compilation. Unfortunately this would
clobber the .d files of the .c files with the same basename, resulting
in broken dependency information when running plain make.

git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@31614 b3059339-0415-0410-9bf9-f77b7e298cf2
2010-11-02 04:14:20 +02:00
diego d86aad3d56 ad_mpg123: add MP3 decoding through libmpg123
patch by Thomas Orgis, thomas-forum orgis org

git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@31590 b3059339-0415-0410-9bf9-f77b7e298cf2
2010-11-02 04:11:46 +02:00
diego a1b8092c87 Factorize MPlayer/MEncoder version string handling.
The string now resides in a central object file instead of
being duplicated in every file that requires a version string.

git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@31577 b3059339-0415-0410-9bf9-f77b7e298cf2
2010-11-02 04:11:43 +02:00