summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorUoti Urpala <uau@glyph.nonexistent.invalid>2010-04-26 18:37:56 +0300
committerUoti Urpala <uau@glyph.nonexistent.invalid>2010-04-26 18:38:11 +0300
commit8df340271e868252e7398307e126ea12083d426b (patch)
tree0380f4e6e3b8ad983b35db712c5d1da609f15e7d
parentb4c7b7ce1142e676bd082952b12713bcc5f3203e (diff)
parent12d6f6b378872ca4c06a268dc33c4e045f4966e4 (diff)
downloadmpv-8df340271e868252e7398307e126ea12083d426b.tar.bz2
mpv-8df340271e868252e7398307e126ea12083d426b.tar.xz
Merge svn changes up to r31040
-rw-r--r--cfg-mplayer.h2
-rw-r--r--etc/codecs.conf4
-rw-r--r--libmpcodecs/mp_image.c105
-rw-r--r--libmpcodecs/mp_image.h108
-rw-r--r--libvo/vo_gl.c2
-rw-r--r--spudec.c8
6 files changed, 113 insertions, 116 deletions
diff --git a/cfg-mplayer.h b/cfg-mplayer.h
index dd4f08a8f6..a4efdca106 100644
--- a/cfg-mplayer.h
+++ b/cfg-mplayer.h
@@ -329,8 +329,6 @@ const m_option_t mplayer_opts[]={
OPT_INTRANGE("pts-association-mode", user_pts_assoc_mode, 0, 0, 2),
{"noautosync", &autosync, CONF_TYPE_FLAG, 0, 0, -1, NULL},
{"autosync", &autosync, CONF_TYPE_INT, CONF_RANGE, 0, 10000, NULL},
-// {"dapsync", &dapsync, CONF_TYPE_FLAG, 0, 0, 1, NULL},
-// {"nodapsync", &dapsync, CONF_TYPE_FLAG, 0, 1, 0, NULL},
{"softsleep", &softsleep, CONF_TYPE_FLAG, 0, 0, 1, NULL},
#ifdef HAVE_RTC
diff --git a/etc/codecs.conf b/etc/codecs.conf
index a8fc871bd7..d8773bda29 100644
--- a/etc/codecs.conf
+++ b/etc/codecs.conf
@@ -3919,7 +3919,9 @@ audiocodec faad
audiocodec ffaac
info "FFmpeg AAC (MPEG-2/MPEG-4 Audio)"
- status working
+ comment "missing LATM support, some SBR in MKV play too slow"
+ ; see samples/Matroska/aac-sbr-ffaac-slow.mkv
+ status buggy
fourcc mp4a,MP4A
fourcc "VLB " ; Used in NSV, not really working
fourcc "AAC " ; Used in NSV
diff --git a/libmpcodecs/mp_image.c b/libmpcodecs/mp_image.c
index ebc9e6a749..e71821129d 100644
--- a/libmpcodecs/mp_image.c
+++ b/libmpcodecs/mp_image.c
@@ -93,3 +93,108 @@ void copy_mpi(mp_image_t *dmpi, mp_image_t *mpi) {
dmpi->stride[0],mpi->stride[0]);
}
}
+
+void mp_image_setfmt(mp_image_t* mpi,unsigned int out_fmt){
+ mpi->flags&=~(MP_IMGFLAG_PLANAR|MP_IMGFLAG_YUV|MP_IMGFLAG_SWAPPED);
+ mpi->imgfmt=out_fmt;
+ // compressed formats
+ if(out_fmt == IMGFMT_MPEGPES ||
+ out_fmt == IMGFMT_ZRMJPEGNI || out_fmt == IMGFMT_ZRMJPEGIT || out_fmt == IMGFMT_ZRMJPEGIB ||
+ IMGFMT_IS_VDPAU(out_fmt) || IMGFMT_IS_XVMC(out_fmt)){
+ mpi->bpp=0;
+ return;
+ }
+ mpi->num_planes=1;
+ if (IMGFMT_IS_RGB(out_fmt)) {
+ if (IMGFMT_RGB_DEPTH(out_fmt) < 8 && !(out_fmt&128))
+ mpi->bpp = IMGFMT_RGB_DEPTH(out_fmt);
+ else
+ mpi->bpp=(IMGFMT_RGB_DEPTH(out_fmt)+7)&(~7);
+ return;
+ }
+ if (IMGFMT_IS_BGR(out_fmt)) {
+ if (IMGFMT_BGR_DEPTH(out_fmt) < 8 && !(out_fmt&128))
+ mpi->bpp = IMGFMT_BGR_DEPTH(out_fmt);
+ else
+ mpi->bpp=(IMGFMT_BGR_DEPTH(out_fmt)+7)&(~7);
+ mpi->flags|=MP_IMGFLAG_SWAPPED;
+ return;
+ }
+ mpi->flags|=MP_IMGFLAG_YUV;
+ mpi->num_planes=3;
+ if (mp_get_chroma_shift(out_fmt, NULL, NULL)) {
+ mpi->flags|=MP_IMGFLAG_PLANAR;
+ mpi->bpp = mp_get_chroma_shift(out_fmt, &mpi->chroma_x_shift, &mpi->chroma_y_shift);
+ mpi->chroma_width = mpi->width >> mpi->chroma_x_shift;
+ mpi->chroma_height = mpi->height >> mpi->chroma_y_shift;
+ }
+ switch(out_fmt){
+ case IMGFMT_I420:
+ case IMGFMT_IYUV:
+ mpi->flags|=MP_IMGFLAG_SWAPPED;
+ case IMGFMT_YV12:
+ return;
+ case IMGFMT_420A:
+ case IMGFMT_IF09:
+ mpi->num_planes=4;
+ case IMGFMT_YVU9:
+ case IMGFMT_444P:
+ case IMGFMT_422P:
+ case IMGFMT_411P:
+ case IMGFMT_440P:
+ case IMGFMT_444P16_LE:
+ case IMGFMT_444P16_BE:
+ case IMGFMT_422P16_LE:
+ case IMGFMT_422P16_BE:
+ case IMGFMT_420P16_LE:
+ case IMGFMT_420P16_BE:
+ return;
+ case IMGFMT_Y800:
+ case IMGFMT_Y8:
+ /* they're planar ones, but for easier handling use them as packed */
+// mpi->flags|=MP_IMGFLAG_PLANAR;
+ mpi->bpp=8;
+ mpi->num_planes=1;
+ return;
+ case IMGFMT_UYVY:
+ mpi->flags|=MP_IMGFLAG_SWAPPED;
+ case IMGFMT_YUY2:
+ mpi->bpp=16;
+ mpi->num_planes=1;
+ return;
+ case IMGFMT_NV12:
+ mpi->flags|=MP_IMGFLAG_SWAPPED;
+ case IMGFMT_NV21:
+ mpi->flags|=MP_IMGFLAG_PLANAR;
+ mpi->bpp=12;
+ mpi->num_planes=2;
+ mpi->chroma_width=(mpi->width>>0);
+ mpi->chroma_height=(mpi->height>>1);
+ mpi->chroma_x_shift=0;
+ mpi->chroma_y_shift=1;
+ return;
+ }
+ mp_msg(MSGT_DECVIDEO,MSGL_WARN,"mp_image: unknown out_fmt: 0x%X\n",out_fmt);
+ mpi->bpp=0;
+}
+
+mp_image_t* new_mp_image(int w,int h){
+ mp_image_t* mpi = malloc(sizeof(mp_image_t));
+ if(!mpi) return NULL; // error!
+ memset(mpi,0,sizeof(mp_image_t));
+ mpi->width=mpi->w=w;
+ mpi->height=mpi->h=h;
+ return mpi;
+}
+
+void free_mp_image(mp_image_t* mpi){
+ if(!mpi) return;
+ if(mpi->flags&MP_IMGFLAG_ALLOCATED){
+ /* becouse we allocate the whole image in once */
+ if(mpi->planes[0]) free(mpi->planes[0]);
+ if (mpi->flags & MP_IMGFLAG_RGB_PALETTE)
+ free(mpi->planes[1]);
+ }
+ free(mpi);
+}
+
diff --git a/libmpcodecs/mp_image.h b/libmpcodecs/mp_image.h
index 36d04502b9..dd69788f26 100644
--- a/libmpcodecs/mp_image.h
+++ b/libmpcodecs/mp_image.h
@@ -122,111 +122,9 @@ typedef struct mp_image {
void* priv;
} mp_image_t;
-#ifdef IMGFMT_YUY2
-static inline void mp_image_setfmt(mp_image_t* mpi,unsigned int out_fmt){
- mpi->flags&=~(MP_IMGFLAG_PLANAR|MP_IMGFLAG_YUV|MP_IMGFLAG_SWAPPED);
- mpi->imgfmt=out_fmt;
- // compressed formats
- if(out_fmt == IMGFMT_MPEGPES ||
- out_fmt == IMGFMT_ZRMJPEGNI || out_fmt == IMGFMT_ZRMJPEGIT || out_fmt == IMGFMT_ZRMJPEGIB ||
- IMGFMT_IS_VDPAU(out_fmt) || IMGFMT_IS_XVMC(out_fmt)){
- mpi->bpp=0;
- return;
- }
- mpi->num_planes=1;
- if (IMGFMT_IS_RGB(out_fmt)) {
- if (IMGFMT_RGB_DEPTH(out_fmt) < 8 && !(out_fmt&128))
- mpi->bpp = IMGFMT_RGB_DEPTH(out_fmt);
- else
- mpi->bpp=(IMGFMT_RGB_DEPTH(out_fmt)+7)&(~7);
- return;
- }
- if (IMGFMT_IS_BGR(out_fmt)) {
- if (IMGFMT_BGR_DEPTH(out_fmt) < 8 && !(out_fmt&128))
- mpi->bpp = IMGFMT_BGR_DEPTH(out_fmt);
- else
- mpi->bpp=(IMGFMT_BGR_DEPTH(out_fmt)+7)&(~7);
- mpi->flags|=MP_IMGFLAG_SWAPPED;
- return;
- }
- mpi->flags|=MP_IMGFLAG_YUV;
- mpi->num_planes=3;
- if (mp_get_chroma_shift(out_fmt, NULL, NULL)) {
- mpi->flags|=MP_IMGFLAG_PLANAR;
- mpi->bpp = mp_get_chroma_shift(out_fmt, &mpi->chroma_x_shift, &mpi->chroma_y_shift);
- mpi->chroma_width = mpi->width >> mpi->chroma_x_shift;
- mpi->chroma_height = mpi->height >> mpi->chroma_y_shift;
- }
- switch(out_fmt){
- case IMGFMT_I420:
- case IMGFMT_IYUV:
- mpi->flags|=MP_IMGFLAG_SWAPPED;
- case IMGFMT_YV12:
- return;
- case IMGFMT_420A:
- case IMGFMT_IF09:
- mpi->num_planes=4;
- case IMGFMT_YVU9:
- case IMGFMT_444P:
- case IMGFMT_422P:
- case IMGFMT_411P:
- case IMGFMT_440P:
- case IMGFMT_444P16_LE:
- case IMGFMT_444P16_BE:
- case IMGFMT_422P16_LE:
- case IMGFMT_422P16_BE:
- case IMGFMT_420P16_LE:
- case IMGFMT_420P16_BE:
- return;
- case IMGFMT_Y800:
- case IMGFMT_Y8:
- /* they're planar ones, but for easier handling use them as packed */
-// mpi->flags|=MP_IMGFLAG_PLANAR;
- mpi->bpp=8;
- mpi->num_planes=1;
- return;
- case IMGFMT_UYVY:
- mpi->flags|=MP_IMGFLAG_SWAPPED;
- case IMGFMT_YUY2:
- mpi->bpp=16;
- mpi->num_planes=1;
- return;
- case IMGFMT_NV12:
- mpi->flags|=MP_IMGFLAG_SWAPPED;
- case IMGFMT_NV21:
- mpi->flags|=MP_IMGFLAG_PLANAR;
- mpi->bpp=12;
- mpi->num_planes=2;
- mpi->chroma_width=(mpi->width>>0);
- mpi->chroma_height=(mpi->height>>1);
- mpi->chroma_x_shift=0;
- mpi->chroma_y_shift=1;
- return;
- }
- mp_msg(MSGT_DECVIDEO,MSGL_WARN,"mp_image: unknown out_fmt: 0x%X\n",out_fmt);
- mpi->bpp=0;
-}
-#endif
-
-static inline mp_image_t* new_mp_image(int w,int h){
- mp_image_t* mpi = malloc(sizeof(mp_image_t));
- if(!mpi) return NULL; // error!
- memset(mpi,0,sizeof(mp_image_t));
- mpi->width=mpi->w=w;
- mpi->height=mpi->h=h;
- return mpi;
-}
-
-static inline void free_mp_image(mp_image_t* mpi){
- if(!mpi) return;
- if(mpi->flags&MP_IMGFLAG_ALLOCATED){
- /* becouse we allocate the whole image in once */
- if(mpi->planes[0]) free(mpi->planes[0]);
- if (mpi->flags & MP_IMGFLAG_RGB_PALETTE)
- free(mpi->planes[1]);
- }
- free(mpi);
-}
+void mp_image_setfmt(mp_image_t* mpi,unsigned int out_fmt);
+mp_image_t* new_mp_image(int w,int h);
+void free_mp_image(mp_image_t* mpi);
mp_image_t* alloc_mpi(int w, int h, unsigned long int fmt);
void mp_image_alloc_planes(mp_image_t *mpi);
diff --git a/libvo/vo_gl.c b/libvo/vo_gl.c
index b97b376bac..5babb180b3 100644
--- a/libvo/vo_gl.c
+++ b/libvo/vo_gl.c
@@ -256,7 +256,7 @@ static void update_yuvconv(void) {
params.chrom_texh = params.texh >> ys;
glSetupYUVConversion(&params);
if (custom_prog) {
- FILE *f = fopen(custom_prog, "r");
+ FILE *f = fopen(custom_prog, "rb");
if (!f)
mp_msg(MSGT_VO, MSGL_WARN,
"[gl] Could not read customprog %s\n", custom_prog);
diff --git a/spudec.c b/spudec.c
index e896aeef16..aedc1c04a9 100644
--- a/spudec.c
+++ b/spudec.c
@@ -174,7 +174,7 @@ static inline unsigned char get_nibble(packet_t *packet)
static inline int mkalpha(int i)
{
/* In mplayer's alpha planes, 0 is transparent, then 1 is nearly
- opaque upto 255 which is transparent */
+ opaque upto 255 which is fully opaque */
// extend 4 -> 8 bit
i |= i << 4;
return (uint8_t)(-i);
@@ -533,12 +533,6 @@ void spudec_assemble(void *this, unsigned char *packet, unsigned int len, int pt
mp_msg(MSGT_SPUDEC,MSGL_WARN,"SPUasm: packet too short\n");
return;
}
-#if 0
- if ((spu->packet_pts + 10000) < pts100) {
- // [cb] too long since last fragment: force new packet
- spu->packet_offset = 0;
- }
-#endif
spu->packet_pts = pts100;
if (spu->packet_offset == 0) {
unsigned int len2 = get_be16(packet);