summaryrefslogtreecommitdiffstats
path: root/libmpdemux
diff options
context:
space:
mode:
authorUoti Urpala <uau@symbol.nonexistent.invalid>2008-07-30 16:39:24 +0300
committerUoti Urpala <uau@symbol.nonexistent.invalid>2008-07-30 16:39:24 +0300
commit04f3909a724a06ca5a5a3921061f2ba9fb9d8787 (patch)
treeb09b4c45898be2754f156ebba16fa1054f42788d /libmpdemux
parent3a69d65f8d07c54f4c9eb2d9c89ab50e35d0a50d (diff)
parent1fdf02e6fbd896c8fcce03992ecdf36144d85714 (diff)
downloadmpv-04f3909a724a06ca5a5a3921061f2ba9fb9d8787.tar.bz2
mpv-04f3909a724a06ca5a5a3921061f2ba9fb9d8787.tar.xz
Merge svn changes up to r27374
Conflicts: cfg-common-opts.h cfg-mplayer.h command.c configure libmpcodecs/dec_video.c libmpcodecs/vd.c libmpcodecs/vf_vo.c libmpdemux/demuxer.h libmpdemux/stheader.h mp_core.h mplayer.c stream/stream_radio.c
Diffstat (limited to 'libmpdemux')
-rw-r--r--libmpdemux/demux_audio.c2
-rw-r--r--libmpdemux/demux_mkv.c12
-rw-r--r--libmpdemux/demux_mov.c6
-rw-r--r--libmpdemux/demux_ogg.c39
-rw-r--r--libmpdemux/demux_rtp.cpp4
-rw-r--r--libmpdemux/demux_rtp_codec.cpp4
-rw-r--r--libmpdemux/demux_rtp_internal.h2
-rw-r--r--libmpdemux/demuxer.c18
-rw-r--r--libmpdemux/extension.c2
-rw-r--r--libmpdemux/mp_taglists.c2
-rw-r--r--libmpdemux/muxer.c2
-rw-r--r--libmpdemux/muxer_mpeg.c2
12 files changed, 40 insertions, 55 deletions
diff --git a/libmpdemux/demux_audio.c b/libmpdemux/demux_audio.c
index 99691ecef0..57fa0d340c 100644
--- a/libmpdemux/demux_audio.c
+++ b/libmpdemux/demux_audio.c
@@ -685,7 +685,7 @@ static int demux_audio_control(demuxer_t *demuxer,int cmd, void *arg){
const demuxer_desc_t demuxer_desc_audio = {
"Audio demuxer",
"audio",
- "Audio file",
+ "Audio only",
"?",
"Audio only files",
DEMUXER_TYPE_AUDIO,
diff --git a/libmpdemux/demux_mkv.c b/libmpdemux/demux_mkv.c
index 3bd7b64057..7352b02bff 100644
--- a/libmpdemux/demux_mkv.c
+++ b/libmpdemux/demux_mkv.c
@@ -32,11 +32,11 @@
#include "libavutil/common.h"
-#ifdef USE_QTX_CODECS
+#ifdef CONFIG_QTX_CODECS
#include "loader/qtx/qtxsdk/components.h"
#endif
-#ifdef HAVE_ZLIB
+#ifdef CONFIG_ZLIB
#include <zlib.h>
#endif
@@ -470,7 +470,7 @@ demux_mkv_decode (mkv_track_t *track, uint8_t *src, uint8_t **dest,
if (!(track->encodings[i].scope & type))
continue;
-#ifdef HAVE_ZLIB
+#ifdef CONFIG_ZLIB
if (track->encodings[i].comp_algo == 0)
{
/* zlib encoded track */
@@ -718,7 +718,7 @@ demux_mkv_read_trackencodings (demuxer_t *demuxer, mkv_track_t *track)
MSGTR_MPDEMUX_MKV_UnknownCompression,
track->tnum, e.comp_algo);
}
-#ifndef HAVE_ZLIB
+#ifndef CONFIG_ZLIB
else if (e.comp_algo == 0)
{
mp_msg (MSGT_DEMUX, MSGL_WARN,
@@ -1756,7 +1756,7 @@ demux_mkv_open_video (demuxer_t *demuxer, mkv_track_t *track, int vid)
stream_read(demuxer->stream, dst+8, cnt);
track->realmedia = 1;
-#ifdef USE_QTX_CODECS
+#ifdef CONFIG_QTX_CODECS
}
else if (track->private_size >= sizeof (ImageDescription)
&& !strcmp(track->codec_id, MKV_V_QUICKTIME))
@@ -1782,7 +1782,7 @@ demux_mkv_open_video (demuxer_t *demuxer, mkv_track_t *track, int vid)
bih->biPlanes = 1;
bih->biCompression = idesc->cType;
ImageDesc = idesc;
-#endif /* USE_QTX_CODECS */
+#endif /* CONFIG_QTX_CODECS */
}
else
diff --git a/libmpdemux/demux_mov.c b/libmpdemux/demux_mov.c
index c15b205774..f31285bef2 100644
--- a/libmpdemux/demux_mov.c
+++ b/libmpdemux/demux_mov.c
@@ -48,7 +48,7 @@
#include "qtpalette.h"
#include "parse_mp4.h" // .MP4 specific stuff
-#ifdef HAVE_ZLIB
+#ifdef CONFIG_ZLIB
#include <zlib.h>
#endif
@@ -1395,7 +1395,7 @@ static void lschunks(demuxer_t* demuxer,int level,off_t endpos,mov_track_t* trak
trak=NULL;
break;
}
-#ifndef HAVE_ZLIB
+#ifndef CONFIG_ZLIB
case MOV_FOURCC('c','m','o','v'): {
mp_msg(MSGT_DEMUX,MSGL_ERR,MSGTR_MOVcomprhdr);
return;
@@ -2027,7 +2027,7 @@ static demuxer_t* mov_read_header(demuxer_t* demuxer){
char2int(trak->stdata,12)==MOV_FOURCC('z','l','i','b')
){
int newlen=stream_read_dword(demuxer->stream);
-#ifdef HAVE_ZLIB
+#ifdef CONFIG_ZLIB
// unzip:
z_stream zstrm;
int zret;
diff --git a/libmpdemux/demux_ogg.c b/libmpdemux/demux_ogg.c
index 3950c2be7e..2bd996e207 100644
--- a/libmpdemux/demux_ogg.c
+++ b/libmpdemux/demux_ogg.c
@@ -100,6 +100,7 @@ typedef struct ogg_stream {
float samplerate; /// granulpos 2 time
int64_t lastpos;
int32_t lastsize;
+ int keyframe_frequency_force;
// Logical stream state
ogg_stream_state stream;
@@ -195,7 +196,7 @@ void demux_ogg_add_sub (ogg_stream_t* os,ogg_packet* pack) {
mp_msg(MSGT_DEMUX,MSGL_DBG2,"Ogg sub lines: %d first: '%s'\n",
ogg_sub.lines, ogg_sub.text[0]);
-#ifdef USE_ICONV
+#ifdef CONFIG_ICONV
subcp_recode(&ogg_sub);
#endif
vo_sub = &ogg_sub;
@@ -236,7 +237,7 @@ static int demux_ogg_get_page_stream(ogg_demuxer_t* ogg_d,ogg_stream_state** os
}
-static unsigned char* demux_ogg_read_packet(ogg_stream_t* os,ogg_packet* pack,void *context,float* pts,int* flags, int samplesize) {
+static unsigned char* demux_ogg_read_packet(ogg_stream_t* os,ogg_packet* pack,float* pts,int* flags, int samplesize) {
unsigned char* data = pack->packet;
*pts = 0;
@@ -273,10 +274,9 @@ static unsigned char* demux_ogg_read_packet(ogg_stream_t* os,ogg_packet* pack,vo
/* header packets begin on 1-bit: thus check (*data&0x80). We don't
have theora_state st, until all header packets were passed to the
decoder. */
- if (context != NULL && !(*data&0x80))
+ if (!(*data&0x80))
{
- theora_info *thi = ((theora_struct_t*)context)->st.i;
- int keyframe_granule_shift=_ilog(thi->keyframe_frequency_force-1);
+ int keyframe_granule_shift=_ilog(os->keyframe_frequency_force-1);
int64_t iframemask = (1 << keyframe_granule_shift) - 1;
if (pack->granulepos >= 0)
@@ -427,7 +427,6 @@ static int demux_ogg_add_packet(demux_stream_t* ds,ogg_stream_t* os,int id,ogg_p
unsigned char* data;
float pts = 0;
int flags = 0;
- void *context = NULL;
int samplesize = 1;
// If packet is an comment header then we try to get comments at first
@@ -468,12 +467,9 @@ static int demux_ogg_add_packet(demux_stream_t* ds,ogg_stream_t* os,int id,ogg_p
// For vorbis packet the packet is the data, for other codec we must jump
// the header
if(ds == d->audio && ((sh_audio_t*)ds->sh)->format == FOURCC_VORBIS) {
- context = ((sh_audio_t *)ds->sh)->context;
samplesize = ((sh_audio_t *)ds->sh)->samplesize;
}
- if (ds == d->video && ((sh_audio_t*)ds->sh)->format == FOURCC_THEORA)
- context = ((sh_video_t *)ds->sh)->context;
- data = demux_ogg_read_packet(os,pack,context,&pts,&flags,samplesize);
+ data = demux_ogg_read_packet(os,pack,&pts,&flags,samplesize);
if (!data)
return 0;
@@ -504,7 +500,6 @@ void demux_ogg_scan_stream(demuxer_t* demuxer) {
ogg_stream_t* os;
ogg_packet op;
int np,sid,p,samplesize=1;
- void *context = NULL;
off_t pos, last_pos;
pos = last_pos = demuxer->movi_start;
@@ -520,15 +515,10 @@ void demux_ogg_scan_stream(demuxer_t* demuxer) {
// Get the serial number of the stream we use
if(demuxer->video->id >= 0) {
sid = demuxer->video->id;
- /* demux_ogg_read_packet needs decoder context for Theora streams */
- if (((sh_video_t*)demuxer->video->sh)->format == FOURCC_THEORA)
- context = ((sh_video_t*)demuxer->video->sh)->context;
}
else if(demuxer->audio->id >= 0) {
sid = demuxer->audio->id;
- /* demux_ogg_read_packet needs decoder context for Vorbis streams */
if(((sh_audio_t*)demuxer->audio->sh)->format == FOURCC_VORBIS) {
- context = ((sh_audio_t*)demuxer->audio->sh)->context;
samplesize = ((sh_audio_t*)demuxer->audio->sh)->samplesize;
}
}
@@ -566,7 +556,7 @@ void demux_ogg_scan_stream(demuxer_t* demuxer) {
while(ogg_stream_packetout(oss,&op) == 1) {
float pts;
int flags;
- demux_ogg_read_packet(os,&op,context,&pts,&flags,samplesize);
+ demux_ogg_read_packet(os,&op,&pts,&flags,samplesize);
if(op.granulepos >= 0) ogg_d->final_granulepos = op.granulepos;
if(index_mode == 2 && (flags || (os->vorbis && op.granulepos >= 0))) {
if (ogg_d->num_syncpoint > SIZE_MAX / sizeof(ogg_syncpoint_t) - 1) break;
@@ -755,7 +745,7 @@ int demux_ogg_open(demuxer_t* demuxer) {
sh_audio_t* sh_a;
sh_video_t* sh_v;
-#ifdef USE_ICONV
+#ifdef CONFIG_ICONV
subcp_open(NULL);
#endif
@@ -865,7 +855,6 @@ int demux_ogg_open(demuxer_t* demuxer) {
{
sh_v = new_sh_video_vid(demuxer,ogg_d->num_sub, n_video);
- sh_v->context = NULL;
sh_v->bih = calloc(1,sizeof(BITMAPINFOHEADER));
sh_v->bih->biSize=sizeof(BITMAPINFOHEADER);
sh_v->bih->biCompression= sh_v->format = FOURCC_THEORA;
@@ -881,6 +870,7 @@ int demux_ogg_open(demuxer_t* demuxer) {
sh_v->bih->biWidth*sh_v->bih->biHeight);
ogg_d->subs[ogg_d->num_sub].samplerate = sh_v->fps;
ogg_d->subs[ogg_d->num_sub].theora = 1;
+ ogg_d->subs[ogg_d->num_sub].keyframe_frequency_force = inf.keyframe_frequency_force;
ogg_d->subs[ogg_d->num_sub].id = n_video;
n_video++;
mp_msg(MSGT_DEMUX,MSGL_INFO,
@@ -1329,7 +1319,6 @@ static void demux_ogg_seek(demuxer_t *demuxer,float rel_seek_secs,float audio_de
int i,sp,first,precision=1,do_seek=1;
vorbis_info* vi = NULL;
int64_t gp = 0, old_gp;
- void *context = NULL;
off_t pos, old_pos;
int np;
int is_gp_valid;
@@ -1340,16 +1329,10 @@ static void demux_ogg_seek(demuxer_t *demuxer,float rel_seek_secs,float audio_de
if(demuxer->video->id >= 0) {
ds = demuxer->video;
- /* demux_ogg_read_packet needs decoder context for Theora streams */
- if (((sh_video_t*)demuxer->video->sh)->format == FOURCC_THEORA)
- context = ((sh_video_t*)demuxer->video->sh)->context;
rate = ogg_d->subs[ds->id].samplerate;
} else {
ds = demuxer->audio;
os = &ogg_d->subs[ds->id];
- /* demux_ogg_read_packet needs decoder context for Vorbis streams */
- if(((sh_audio_t*)demuxer->audio->sh)->format == FOURCC_VORBIS)
- context = ((sh_audio_t*)demuxer->audio->sh)->context;
vi = &(os->vi);
rate = (float)vi->rate;
samplesize = ((sh_audio_t*)ds->sh)->samplesize;
@@ -1456,7 +1439,7 @@ static void demux_ogg_seek(demuxer_t *demuxer,float rel_seek_secs,float audio_de
}
is_gp_valid = (op.granulepos >= 0);
granulepos_orig=op.granulepos;
- demux_ogg_read_packet(os,&op,context,&pts,&is_keyframe,samplesize);
+ demux_ogg_read_packet(os,&op,&pts,&is_keyframe,samplesize);
if (precision && is_gp_valid) {
precision--;
if (abs(gp - op.granulepos) > rate && (op.granulepos != old_gp)) {
@@ -1504,7 +1487,7 @@ static void demux_close_ogg(demuxer_t* demuxer) {
if(!ogg_d)
return;
-#ifdef USE_ICONV
+#ifdef CONFIG_ICONV
subcp_close();
#endif
diff --git a/libmpdemux/demux_rtp.cpp b/libmpdemux/demux_rtp.cpp
index fc4967f911..7ec42db75a 100644
--- a/libmpdemux/demux_rtp.cpp
+++ b/libmpdemux/demux_rtp.cpp
@@ -501,7 +501,7 @@ static demux_packet_t* getBuffer(demuxer_t* demuxer, demux_stream_t* ds,
if (dp == NULL) return NULL;
}
-#ifdef USE_LIBAVCODEC
+#ifdef CONFIG_LIBAVCODEC
extern AVCodecParserContext * h264parserctx;
int consumed, poutbuf_size = 1;
const uint8_t *poutbuf = NULL;
@@ -532,7 +532,7 @@ static demux_packet_t* getBuffer(demuxer_t* demuxer, demux_stream_t* ds,
if (headersize == 1) // amr
dp->buffer[0] =
((AMRAudioSource*)bufferQueue->readSource())->lastFrameHeader();
-#ifdef USE_LIBAVCODEC
+#ifdef CONFIG_LIBAVCODEC
} else {
bufferQueue->dp = dp = bufferQueue->nextpacket;
bufferQueue->nextpacket = NULL;
diff --git a/libmpdemux/demux_rtp_codec.cpp b/libmpdemux/demux_rtp_codec.cpp
index 33b2dc41eb..4dd2a1908f 100644
--- a/libmpdemux/demux_rtp_codec.cpp
+++ b/libmpdemux/demux_rtp_codec.cpp
@@ -9,7 +9,7 @@ extern "C" {
#include "libavutil/base64.h"
}
-#ifdef USE_LIBAVCODEC
+#ifdef CONFIG_LIBAVCODEC
AVCodecParserContext * h264parserctx;
#endif
@@ -116,7 +116,7 @@ void rtpCodecInitialize_video(demuxer_t* demuxer,
= parseH264ConfigStr(subsession->fmtp_spropparametersets(), configLen);
sh_video->bih = bih = insertVideoExtradata(bih, configData, configLen);
delete[] configData;
-#ifdef USE_LIBAVCODEC
+#ifdef CONFIG_LIBAVCODEC
avcodec_register_all();
h264parserctx = av_parser_init(CODEC_ID_H264);
#endif
diff --git a/libmpdemux/demux_rtp_internal.h b/libmpdemux/demux_rtp_internal.h
index 89f6002f98..d504b49c7d 100644
--- a/libmpdemux/demux_rtp_internal.h
+++ b/libmpdemux/demux_rtp_internal.h
@@ -10,7 +10,7 @@ extern "C" {
#ifndef DEMUXER_H
#include "demuxer.h"
#endif
-#ifdef USE_LIBAVCODEC
+#ifdef CONFIG_LIBAVCODEC
#include "libavcodec/avcodec.h"
#endif
}
diff --git a/libmpdemux/demuxer.c b/libmpdemux/demuxer.c
index e7234b14af..6ca1f4aaa4 100644
--- a/libmpdemux/demuxer.c
+++ b/libmpdemux/demuxer.c
@@ -23,12 +23,12 @@
#include "libaf/af_format.h"
-#ifdef USE_ASS
+#ifdef CONFIG_ASS
#include "libass/ass.h"
#include "libass/ass_mp.h"
#endif
-#ifdef USE_LIBAVCODEC
+#ifdef CONFIG_LIBAVCODEC
#include "libavcodec/avcodec.h"
#if MP_INPUT_BUFFER_PADDING_SIZE < FF_INPUT_BUFFER_PADDING_SIZE
#error MP_INPUT_BUFFER_PADDING_SIZE is too small!
@@ -89,11 +89,11 @@ extern const demuxer_desc_t demuxer_desc_nut;
const demuxer_desc_t *const demuxer_list[] = {
&demuxer_desc_rawaudio,
&demuxer_desc_rawvideo,
-#ifdef USE_TV
+#ifdef CONFIG_TV
&demuxer_desc_tv,
#endif
&demuxer_desc_mf,
-#ifdef USE_LIBAVFORMAT
+#ifdef CONFIG_LIBAVFORMAT
&demuxer_desc_lavf_preferred,
#endif
&demuxer_desc_avi,
@@ -117,7 +117,7 @@ const demuxer_desc_t *const demuxer_list[] = {
#ifdef HAVE_OGGVORBIS
&demuxer_desc_ogg,
#endif
-#ifdef USE_WIN32DLL
+#ifdef CONFIG_WIN32DLL
&demuxer_desc_avs,
#endif
&demuxer_desc_pva,
@@ -137,7 +137,7 @@ const demuxer_desc_t *const demuxer_list[] = {
#ifdef LIBNEMESI
&demuxer_desc_rtp_nemesi,
#endif
-#ifdef USE_LIBAVFORMAT
+#ifdef CONFIG_LIBAVFORMAT
&demuxer_desc_lavf,
#endif
#ifdef MUSEPACK
@@ -265,7 +265,7 @@ void free_sh_sub(sh_sub_t *sh)
{
mp_msg(MSGT_DEMUXER, MSGL_DBG2, "DEMUXER: freeing sh_sub at %p\n", sh);
free(sh->extradata);
-#ifdef USE_ASS
+#ifdef CONFIG_ASS
if (sh->ass_track)
ass_free_track(sh->ass_track);
#endif
@@ -909,7 +909,7 @@ static demuxer_t *demux_open_stream(struct MPOpts *opts, stream_t *stream,
sh_video->fps, sh_video->i_bps * 0.008f,
sh_video->i_bps / 1024.0f);
}
-#ifdef USE_ASS
+#ifdef CONFIG_ASS
if (ass_enabled && ass_library) {
for (i = 0; i < MAX_S_STREAMS; ++i) {
sh_sub_t *sh = demuxer->s_streams[i];
@@ -1072,7 +1072,7 @@ int demux_seek(demuxer_t *demuxer, float rel_seek_secs, float audio_delay,
if (!demuxer->seekable) {
if (demuxer->file_format == DEMUXER_TYPE_AVI)
mp_msg(MSGT_SEEK, MSGL_WARN, MSGTR_CantSeekRawAVI);
-#ifdef USE_TV
+#ifdef CONFIG_TV
else if (demuxer->file_format == DEMUXER_TYPE_TV)
mp_msg(MSGT_SEEK, MSGL_WARN, MSGTR_TVInputNotSeekable);
#endif
diff --git a/libmpdemux/extension.c b/libmpdemux/extension.c
index 5db36b6f29..a1cd2a49d2 100644
--- a/libmpdemux/extension.c
+++ b/libmpdemux/extension.c
@@ -52,7 +52,7 @@ static struct {
{ "nsv", DEMUXER_TYPE_NSV },
{ "nsa", DEMUXER_TYPE_NSV },
{ "mpc", DEMUXER_TYPE_MPC },
-#ifdef USE_WIN32DLL
+#ifdef CONFIG_WIN32DLL
{ "avs", DEMUXER_TYPE_AVS },
#endif
{ "302", DEMUXER_TYPE_LAVF },
diff --git a/libmpdemux/mp_taglists.c b/libmpdemux/mp_taglists.c
index 39e8b76d92..d6e4f94de5 100644
--- a/libmpdemux/mp_taglists.c
+++ b/libmpdemux/mp_taglists.c
@@ -72,11 +72,13 @@ static const AVCodecTag mp_bmp_tags[] = {
{ CODEC_ID_IDCIN, MKTAG('I', 'D', 'C', 'I')},
{ CODEC_ID_INTERPLAY_VIDEO, MKTAG('I', 'N', 'P', 'V')},
{ CODEC_ID_MDEC, MKTAG('M', 'D', 'E', 'C')},
+ { CODEC_ID_MOTIONPIXELS, MKTAG('M', 'V', 'I', '1')},
{ CODEC_ID_RL2, MKTAG('R', 'L', '2', 'V')},
{ CODEC_ID_ROQ, MKTAG('R', 'o', 'Q', 'V')},
{ CODEC_ID_THP, MKTAG('T', 'H', 'P', 'V')},
{ CODEC_ID_TIERTEXSEQVIDEO, MKTAG('T', 'S', 'E', 'Q')},
{ CODEC_ID_TXD, MKTAG('T', 'X', 'D', 'V')},
+ { CODEC_ID_VP6A, MKTAG('V', 'P', '6', 'A')},
{ CODEC_ID_VMDVIDEO, MKTAG('V', 'M', 'D', 'V')},
{ CODEC_ID_WS_VQA, MKTAG('V', 'Q', 'A', 'V')},
{ CODEC_ID_XAN_WC3, MKTAG('W', 'C', '3', 'V')},
diff --git a/libmpdemux/muxer.c b/libmpdemux/muxer.c
index 4c4e5a18cf..d7bda17a61 100644
--- a/libmpdemux/muxer.c
+++ b/libmpdemux/muxer.c
@@ -34,7 +34,7 @@ muxer_t *muxer_new_muxer(int type,stream_t *stream){
if(! muxer_init_muxer_rawaudio(muxer))
goto fail;
break;
-#ifdef USE_LIBAVFORMAT
+#ifdef CONFIG_LIBAVFORMAT
case MUXER_TYPE_LAVF:
if(! muxer_init_muxer_lavf(muxer))
goto fail;
diff --git a/libmpdemux/muxer_mpeg.c b/libmpdemux/muxer_mpeg.c
index 2a659b7f00..d2f67e2a54 100644
--- a/libmpdemux/muxer_mpeg.c
+++ b/libmpdemux/muxer_mpeg.c
@@ -2101,7 +2101,7 @@ static int parse_audio(muxer_stream_t *s, int finalize, unsigned int *nf, double
if(s->b_buffer[i] == 0x0B && s->b_buffer[i+1] == 0x77)
{
srate = 0;
- #ifdef USE_LIBA52
+ #ifdef CONFIG_LIBA52
len = a52_syncinfo(&(s->b_buffer[i]), &dummy, &srate, &dummy);
#else
len = mp_a52_framesize(&(s->b_buffer[i]), &srate);