mirror of
https://github.com/mpv-player/mpv
synced 2025-05-03 08:39:03 +00:00
Merge svn changes up to r30972
This commit is contained in:
commit
6a7956a11b
@ -195,18 +195,10 @@ void GetCpuCaps( CpuCaps *caps)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* FIXME: Does SSE2 need more OS support, too? */
|
/* FIXME: Does SSE2 need more OS support, too? */
|
||||||
#if defined(__linux__) || defined(__FreeBSD__) || defined(__FreeBSD_kernel__) \
|
|
||||||
|| defined(__NetBSD__) || defined(__OpenBSD__) || defined(__DragonFly__) \
|
|
||||||
|| defined(__APPLE__) || defined(__CYGWIN__) || defined(__MINGW32__) \
|
|
||||||
|| defined(__OS2__)
|
|
||||||
if (caps->hasSSE)
|
if (caps->hasSSE)
|
||||||
check_os_katmai_support();
|
check_os_katmai_support();
|
||||||
if (!caps->hasSSE)
|
if (!caps->hasSSE)
|
||||||
caps->hasSSE2 = 0;
|
caps->hasSSE2 = 0;
|
||||||
#else
|
|
||||||
caps->hasSSE=0;
|
|
||||||
caps->hasSSE2 = 0;
|
|
||||||
#endif
|
|
||||||
// caps->has3DNow=1;
|
// caps->has3DNow=1;
|
||||||
// caps->hasMMX2 = 0;
|
// caps->hasMMX2 = 0;
|
||||||
// caps->hasMMX = 0;
|
// caps->hasMMX = 0;
|
||||||
|
@ -124,7 +124,7 @@ static mp_image_t* decode(sh_video_t *sh,void* data,int len,int flags){
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
frame_size=mpi->stride[0]*mpi->h;
|
frame_size=mpi->stride[0]*mpi->h;
|
||||||
if (format == MKTAG('y', 'u', 'v', '2')) {
|
if (len >= frame_size && format == MKTAG('y', 'u', 'v', '2')) {
|
||||||
int i;
|
int i;
|
||||||
for (i = 1; i < frame_size; i += 2)
|
for (i = 1; i < frame_size; i += 2)
|
||||||
mpi->planes[0][i] ^= 128;
|
mpi->planes[0][i] ^= 128;
|
||||||
|
@ -75,6 +75,7 @@ static int y4m_check_file(demuxer_t* demuxer){
|
|||||||
return DEMUXER_TYPE_Y4M;
|
return DEMUXER_TYPE_Y4M;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void read_streaminfo(demuxer_t *demuxer);
|
||||||
|
|
||||||
// return value:
|
// return value:
|
||||||
// 0 = EOF or no stream found
|
// 0 = EOF or no stream found
|
||||||
@ -86,6 +87,14 @@ static int demux_y4m_fill_buffer(demuxer_t *demux, demux_stream_t *dsds) {
|
|||||||
y4m_frame_info_t fi;
|
y4m_frame_info_t fi;
|
||||||
unsigned char *buf[3];
|
unsigned char *buf[3];
|
||||||
int err, size;
|
int err, size;
|
||||||
|
int nextc;
|
||||||
|
|
||||||
|
nextc = stream_read_char(demux->stream);
|
||||||
|
stream_skip(demux->stream, -1);
|
||||||
|
if (nextc == 'Y') {
|
||||||
|
read_streaminfo(demux);
|
||||||
|
demux->seekable = 0;
|
||||||
|
}
|
||||||
|
|
||||||
y4m_init_frame_info(&fi);
|
y4m_init_frame_info(&fi);
|
||||||
|
|
||||||
@ -135,15 +144,13 @@ static int demux_y4m_fill_buffer(demuxer_t *demux, demux_stream_t *dsds) {
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static demuxer_t* demux_open_y4m(demuxer_t* demuxer){
|
static void read_streaminfo(demuxer_t *demuxer)
|
||||||
|
{
|
||||||
y4m_priv_t *priv = demuxer->priv;
|
y4m_priv_t *priv = demuxer->priv;
|
||||||
|
sh_video_t *sh = demuxer->video->sh;
|
||||||
y4m_ratio_t ratio;
|
y4m_ratio_t ratio;
|
||||||
sh_video_t* sh=new_sh_video(demuxer,0);
|
|
||||||
int err;
|
int err;
|
||||||
|
|
||||||
priv->framenum = 0;
|
|
||||||
priv->si = malloc(sizeof(y4m_stream_info_t));
|
|
||||||
|
|
||||||
if (priv->is_older)
|
if (priv->is_older)
|
||||||
{
|
{
|
||||||
char buf[4];
|
char buf[4];
|
||||||
@ -227,8 +234,6 @@ static demuxer_t* demux_open_y4m(demuxer_t* demuxer){
|
|||||||
|
|
||||||
sh->format = mmioFOURCC('Y', 'V', '1', '2');
|
sh->format = mmioFOURCC('Y', 'V', '1', '2');
|
||||||
|
|
||||||
sh->bih=malloc(sizeof(BITMAPINFOHEADER));
|
|
||||||
memset(sh->bih,0,sizeof(BITMAPINFOHEADER));
|
|
||||||
sh->bih->biSize=40;
|
sh->bih->biSize=40;
|
||||||
sh->bih->biWidth = sh->disp_w;
|
sh->bih->biWidth = sh->disp_w;
|
||||||
sh->bih->biHeight = sh->disp_h;
|
sh->bih->biHeight = sh->disp_h;
|
||||||
@ -237,14 +242,25 @@ static demuxer_t* demux_open_y4m(demuxer_t* demuxer){
|
|||||||
sh->bih->biCompression=sh->format;
|
sh->bih->biCompression=sh->format;
|
||||||
sh->bih->biSizeImage=sh->bih->biWidth*sh->bih->biHeight*3/2; /* YV12 */
|
sh->bih->biSizeImage=sh->bih->biWidth*sh->bih->biHeight*3/2; /* YV12 */
|
||||||
|
|
||||||
|
mp_msg(MSGT_DEMUX, MSGL_INFO, "YUV4MPEG2 Video stream %d size: display: %dx%d, codec: %ux%u\n",
|
||||||
|
demuxer->video->id, sh->disp_w, sh->disp_h, sh->bih->biWidth,
|
||||||
|
sh->bih->biHeight);
|
||||||
|
}
|
||||||
|
|
||||||
|
static demuxer_t* demux_open_y4m(demuxer_t* demuxer){
|
||||||
|
y4m_priv_t* priv = demuxer->priv;
|
||||||
|
sh_video_t* sh=new_sh_video(demuxer,0);
|
||||||
|
|
||||||
|
priv->framenum = 0;
|
||||||
|
priv->si = malloc(sizeof(y4m_stream_info_t));
|
||||||
|
|
||||||
|
sh->bih=calloc(1, sizeof(BITMAPINFOHEADER));
|
||||||
|
|
||||||
demuxer->video->sh=sh;
|
demuxer->video->sh=sh;
|
||||||
sh->ds=demuxer->video;
|
sh->ds=demuxer->video;
|
||||||
demuxer->video->id=0;
|
demuxer->video->id=0;
|
||||||
|
|
||||||
|
read_streaminfo(demuxer);
|
||||||
mp_msg(MSGT_DEMUX, MSGL_INFO, "YUV4MPEG2 Video stream %d size: display: %dx%d, codec: %ux%u\n",
|
|
||||||
demuxer->video->id, sh->disp_w, sh->disp_h, sh->bih->biWidth,
|
|
||||||
sh->bih->biHeight);
|
|
||||||
|
|
||||||
return demuxer;
|
return demuxer;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user