mirror of
https://github.com/mpv-player/mpv
synced 2025-01-02 21:12:23 +00:00
Merge svn changes up to r31040
This commit is contained in:
commit
8df340271e
@ -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
|
||||
|
@ -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
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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);
|
||||
|
@ -256,7 +256,7 @@ static void update_yuvconv(void) {
|
||||
params.chrom_texh = params.texh >> ys;
|
||||
glSetupYUVConversion(¶ms);
|
||||
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);
|
||||
|
8
spudec.c
8
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);
|
||||
|
Loading…
Reference in New Issue
Block a user