summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDarren Salt <linux@youmustbejoking.demon.co.uk>2010-03-24 21:02:08 +0000
committerDarren Salt <linux@youmustbejoking.demon.co.uk>2010-03-24 21:02:08 +0000
commit1e26328be7611a7acdd5f9ecbcac32cba5cfab57 (patch)
tree74fb64a947e066d05874954404414997f5ae7641
parentbf90f534f29892ded8f92f088bd9c78486d5833e (diff)
parent74853b910cfd296eb0fea43394a3819e803c46b9 (diff)
downloadxine-lib-1e26328be7611a7acdd5f9ecbcac32cba5cfab57.tar.gz
xine-lib-1e26328be7611a7acdd5f9ecbcac32cba5cfab57.tar.bz2
Merge from 1.1.
--HG-- rename : doc/hackersguide/internals.sgml => doc/hackersguide/internals.docbook rename : doc/hackersguide/library.sgml => doc/hackersguide/library.docbook rename : include/xine.h.in => include/xine.h rename : src/xine-engine/buffer.h => include/xine/buffer.h rename : src/demuxers/demux_ogg.c => src/combined/xine_ogg_demuxer.c
-rw-r--r--ChangeLog2
-rw-r--r--doc/hackersguide/library.docbook2
-rw-r--r--include/xine.h2
-rw-r--r--include/xine/buffer.h1
-rw-r--r--m4/summary.m41
-rw-r--r--misc/Makefile.am1
-rw-r--r--misc/logo/xine_logo.pngbin0 -> 46172 bytes
-rw-r--r--misc/logo/xine_logo_text.svg72
-rw-r--r--misc/xine_logo.mpvbin28921 -> 0 bytes
-rw-r--r--misc/xine_logo.pngbin44337 -> 0 bytes
-rw-r--r--src/combined/ffmpeg/ff_audio_decoder.c1
-rw-r--r--src/combined/ffmpeg/xine_audio.list1
-rw-r--r--src/combined/xine_ogg_demuxer.c1
-rw-r--r--src/demuxers/demux_matroska.c5
-rw-r--r--src/demuxers/demux_tta.c13
-rw-r--r--src/demuxers/id3.c8
-rw-r--r--src/demuxers/matroska.h1
-rw-r--r--src/xine-engine/buffer_types.c7
18 files changed, 113 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog
index e544bf6d9..663099f74 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -74,6 +74,8 @@ xine-lib (1.1.19) 2010-??-??
* Handle odd widths properly (for ffmpeg-decoded video).
* Make buildable with current (external) libdvdnav & libdvdread.
* Fix V4L2 check.
+ * Add support for Ogg tag 'DISCNUMBER' and ID3 tag 'TPOS'.
+ * Add support for EAC3.
xine-lib (1.1.18.1) 2010-03-06
* Oops. compat.c (for DXR3 support) was omitted.
diff --git a/doc/hackersguide/library.docbook b/doc/hackersguide/library.docbook
index 01412e362..51c82e9f3 100644
--- a/doc/hackersguide/library.docbook
+++ b/doc/hackersguide/library.docbook
@@ -69,7 +69,7 @@
*/
/*
- * compile-command: "gcc -Wall -O2 `pkg-config --cflags --libs libxine` -L/usr/X11R6/lib -lX11 -lm -o xinimin xinimin.c"
+ * compile-command: "gcc -Wall -O2 `pkg-config --cflags --libs libxine x11` -lm -o xinimin xinimin.c"
*/
#include &lt;stdio.h&gt;
diff --git a/include/xine.h b/include/xine.h
index 29c9d6429..86220388d 100644
--- a/include/xine.h
+++ b/include/xine.h
@@ -963,6 +963,8 @@ const char *xine_get_meta_info (xine_stream_t *stream, int info) XINE_PROTECTE
#define XINE_META_INFO_PART 23
#define XINE_META_INFO_PARTNUMBER 24
#define XINE_META_INFO_LOCATION 25
+/* post-1.1.18.1 */
+#define XINE_META_INFO_DISCNUMBER 26
/*********************************************************************
diff --git a/include/xine/buffer.h b/include/xine/buffer.h
index 1a51da6c3..35c793439 100644
--- a/include/xine/buffer.h
+++ b/include/xine/buffer.h
@@ -266,6 +266,7 @@ extern "C" {
#define BUF_AUDIO_MP3ADU 0x033E0000
#define BUF_AUDIO_AMR_NB 0x033F0000
#define BUF_AUDIO_AMR_WB 0x03400000
+#define BUF_AUDIO_EAC3 0x03410000
/*@}*/
/**
diff --git a/m4/summary.m4 b/m4/summary.m4
index c5b9a4132..79f476a39 100644
--- a/m4/summary.m4
+++ b/m4/summary.m4
@@ -61,6 +61,7 @@ AC_DEFUN([XINE_LIB_SUMMARY], [
echo " - ac3 (*INTERNAL* library)"
fi
fi
+ echo " - E-AC-3"
test x"$enable_asf" != x"no" && echo " - asf"
test x"$enable_nosefart" != xno && echo " - Nosefart (NSF)"
test x"$enable_mng" != x"no" && echo " - mng"
diff --git a/misc/Makefile.am b/misc/Makefile.am
index f5f5b2ef9..308ac6533 100644
--- a/misc/Makefile.am
+++ b/misc/Makefile.am
@@ -8,6 +8,7 @@ EXTRA_DIST = build_rpms.sh \
xine-lib.spec.in \
xine-lib.spec \
libxine.pc.in \
+ logo/xine_logo_text.svg \
libdvdcss-1.2.6-network.patch \
Makefile.plugins.in \
Makefile.common \
diff --git a/misc/logo/xine_logo.png b/misc/logo/xine_logo.png
new file mode 100644
index 000000000..0604f1873
--- /dev/null
+++ b/misc/logo/xine_logo.png
Binary files differ
diff --git a/misc/logo/xine_logo_text.svg b/misc/logo/xine_logo_text.svg
new file mode 100644
index 000000000..ad3f8e3b6
--- /dev/null
+++ b/misc/logo/xine_logo_text.svg
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="768"
+ height="576"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.47 r22583"
+ sodipodi:docname="xine_logo_text.svg">
+ <defs
+ id="defs4">
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective10" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="1"
+ inkscape:cx="396.54604"
+ inkscape:cy="282.08051"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ inkscape:window-width="1270"
+ inkscape:window-height="999"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:window-maximized="1" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(0,-476.36218)">
+ <g
+ style="font-size:144px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Gunship;-inkscape-font-specification:Gunship"
+ id="text2816">
+ <path
+ id="path2827"
+ style=""
+ d="m 530.94075,753.92218 93.888,0 0,19.584 -93.888,0 0,13.824 100.656,0 0,23.04 -111.312,0 c -6.72003,0 -12.43202,-2.352 -17.136,-7.056 -4.70401,-4.70399 -7.05601,-10.41598 -7.056,-17.136 l 0,-43.632 c -1e-5,-6.71993 2.35199,-12.43192 7.056,-17.136 4.70398,-4.70391 10.41597,-7.05591 17.136,-7.056 l 110.88,0 0,22.896 -100.224,0 0,12.672 m -84.5235,56.448 0,-69.12 -65.664,0 0,69.12 -34.704,0 0,-92.016 111.312,0 c 6.62387,9e-5 12.28787,2.35209 16.992,7.056 4.79986,4.80008 7.19985,10.51207 7.2,17.136 l 0,67.824 -35.136,0 m -114.71175,0 -36,0 0,-92.016 36,0 0,92.016 m -97.38225,-49.104 45.36,-42.912 -43.344,0 -27.36,27.216 -27.36,-27.216 -43.344,0 45.36,42.912 -47.232,49.104 45.216,0 27.36,-29.664 27.36,29.664 45.36,0 -47.376,-49.104" />
+ </g>
+ </g>
+</svg>
diff --git a/misc/xine_logo.mpv b/misc/xine_logo.mpv
deleted file mode 100644
index dba01c40f..000000000
--- a/misc/xine_logo.mpv
+++ /dev/null
Binary files differ
diff --git a/misc/xine_logo.png b/misc/xine_logo.png
deleted file mode 100644
index 7e555ae3d..000000000
--- a/misc/xine_logo.png
+++ /dev/null
Binary files differ
diff --git a/src/combined/ffmpeg/ff_audio_decoder.c b/src/combined/ffmpeg/ff_audio_decoder.c
index b6b5a2075..534a97afb 100644
--- a/src/combined/ffmpeg/ff_audio_decoder.c
+++ b/src/combined/ffmpeg/ff_audio_decoder.c
@@ -284,6 +284,7 @@ static void ff_audio_decode_data (audio_decoder_t *this_gen, buf_element_t *buf)
if (!this->output_open) {
if (!this->audio_bits || !this->audio_sample_rate || !this->audio_channels) {
+ decode_buffer_size = AVCODEC_MAX_AUDIO_FRAME_SIZE;
avcodec_decode_audio2 (this->context,
(int16_t *)this->decode_buffer,
&decode_buffer_size,
diff --git a/src/combined/ffmpeg/xine_audio.list b/src/combined/ffmpeg/xine_audio.list
index b4a7455ea..796917dfe 100644
--- a/src/combined/ffmpeg/xine_audio.list
+++ b/src/combined/ffmpeg/xine_audio.list
@@ -40,6 +40,7 @@ FLVADPCM ADPCM_SWF Flash ADPCM
WAVPACK WAVPACK WavPack
AMR_NB AMR_NB AMR narrow band
AMR_WB AMR_WB AMR wide band
+EAC3 EAC3 E-AC-3
# disabled codecs (ref. configure.ac)
! AAC
diff --git a/src/combined/xine_ogg_demuxer.c b/src/combined/xine_ogg_demuxer.c
index 6aa89c142..fa6fd10eb 100644
--- a/src/combined/xine_ogg_demuxer.c
+++ b/src/combined/xine_ogg_demuxer.c
@@ -429,6 +429,7 @@ static const struct ogg_meta {
OGG_META (ARTIST, 0),
OGG_META (PUBLISHER, 0),
OGG_META (COPYRIGHT, 0),
+ OGG_META (DISCNUMBER, 0),
OGG_META (LICENSE, 0),
OGG_META (TITLE, 0),
OGG_META_L (TRACKNUMBER, 0, TRACK_NUMBER),
diff --git a/src/demuxers/demux_matroska.c b/src/demuxers/demux_matroska.c
index eddbf67b1..032917ad9 100644
--- a/src/demuxers/demux_matroska.c
+++ b/src/demuxers/demux_matroska.c
@@ -1352,6 +1352,11 @@ static int parse_track_entry(demux_matroska_t *this, matroska_track_t *track) {
track->buf_type = BUF_AUDIO_A52;
init_codec = init_codec_audio;
+ } else if (!strcmp(track->codec_id, MATROSKA_CODEC_ID_A_EAC3)) {
+ lprintf("MATROSKA_CODEC_ID_A_EAC3\n");
+ track->buf_type = BUF_AUDIO_EAC3;
+ init_codec = init_codec_audio;
+
} else if (!strcmp(track->codec_id, MATROSKA_CODEC_ID_A_DTS)) {
lprintf("MATROSKA_CODEC_ID_A_DTS\n");
track->buf_type = BUF_AUDIO_DTS;
diff --git a/src/demuxers/demux_tta.c b/src/demuxers/demux_tta.c
index ada6cab30..d7c2a65cd 100644
--- a/src/demuxers/demux_tta.c
+++ b/src/demuxers/demux_tta.c
@@ -128,7 +128,7 @@ static int demux_tta_send_chunk(demux_plugin_t *this_gen) {
/* Get a buffer */
buf = this->audio_fifo->buffer_pool_alloc(this->audio_fifo);
buf->type = BUF_AUDIO_TTA;
- buf->pts = 0;
+ buf->pts = (int64_t)(FRAME_TIME * this->currentframe) * 90000;
buf->extra_info->total_time = (int)(le2me_32(this->header.tta.data_length) * 1000.0 / le2me_32(this->header.tta.samplerate)); /* milliseconds */
buf->decoder_flags = 0;
@@ -230,6 +230,7 @@ static int demux_tta_seek (demux_plugin_t *this_gen,
demux_tta_t *this = (demux_tta_t *) this_gen;
uint32_t start_frame;
uint32_t frame_index;
+ int64_t pts;
off_t start_off = this->datastart;
/* if thread is not running, initialize demuxer */
@@ -243,10 +244,14 @@ static int demux_tta_seek (demux_plugin_t *this_gen,
} else {
/* Get the starting frame */
- if( start_pos )
+ if( start_pos ) {
+ pts = start_pos * le2me_32(this->header.tta.data_length) * 1000.0 / le2me_32(this->header.tta.samplerate) * 90 / 65535;
start_frame = start_pos * this->totalframes / 65535;
- else
+
+ } else {
+ pts = start_time * 90;
start_frame = (uint32_t)((double)start_time/ 1000.0 / FRAME_TIME);
+ }
/* Now we find the offset */
for( frame_index = 0; frame_index < start_frame; frame_index++ )
@@ -257,7 +262,7 @@ static int demux_tta_seek (demux_plugin_t *this_gen,
_x_demux_flush_engine(this->stream);
this->input->seek(this->input, start_off, SEEK_SET);
this->currentframe = start_frame;
- _x_demux_control_newpts(this->stream, (int)(FRAME_TIME * start_frame) * 90000, BUF_FLAG_SEEK);
+ _x_demux_control_newpts(this->stream, pts, BUF_FLAG_SEEK);
this->status = DEMUX_OK;
}
diff --git a/src/demuxers/id3.c b/src/demuxers/id3.c
index cdd585884..ea28f5666 100644
--- a/src/demuxers/id3.c
+++ b/src/demuxers/id3.c
@@ -511,6 +511,10 @@ static int id3v23_interp_frame(input_plugin_t *input,
_x_meta_info_set(stream, XINE_META_INFO_TRACK_NUMBER, buf + 1);
break;
+ case BE_FOURCC('T', 'P', 'O', 'S'):
+ _x_meta_info_set(stream, XINE_META_INFO_DISCNUMBER, buf + 1);
+ break;
+
default:
lprintf("unhandled frame\n");
}
@@ -761,6 +765,10 @@ static int id3v24_interp_frame(input_plugin_t *input,
_x_meta_info_set(stream, XINE_META_INFO_TRACK_NUMBER, buf + 1);
break;
+ case BE_FOURCC('T', 'P', 'O', 'S'):
+ _x_meta_info_set(stream, XINE_META_INFO_DISCNUMBER, buf + 1);
+ break;
+
default:
lprintf("unhandled frame\n");
}
diff --git a/src/demuxers/matroska.h b/src/demuxers/matroska.h
index 040400e0c..6109ad278 100644
--- a/src/demuxers/matroska.h
+++ b/src/demuxers/matroska.h
@@ -320,6 +320,7 @@ struct matroska_track_s {
#define MATROSKA_CODEC_ID_A_PCM_INT_LE "A_PCM/INT/LIT"
#define MATROSKA_CODEC_ID_A_PCM_FLOAT "A_PCM/FLOAT/IEEE"
#define MATROSKA_CODEC_ID_A_AC3 "A_AC3"
+#define MATROSKA_CODEC_ID_A_EAC3 "A_EAC3"
#define MATROSKA_CODEC_ID_A_DTS "A_DTS"
#define MATROSKA_CODEC_ID_A_VORBIS "A_VORBIS"
#define MATROSKA_CODEC_ID_A_ACM "A_MS/ACM"
diff --git a/src/xine-engine/buffer_types.c b/src/xine-engine/buffer_types.c
index 413bfb9f0..2f362fa21 100644
--- a/src/xine-engine/buffer_types.c
+++ b/src/xine-engine/buffer_types.c
@@ -1178,6 +1178,13 @@ static const audio_db_t audio_db[] = {
BUF_AUDIO_TTA,
"True Audio Lossless"
},
+{
+ {
+ 0
+ },
+ BUF_AUDIO_EAC3,
+ "E-AC-3"
+},
{ { 0 }, 0, "last entry" }
};