Mercurial > mplayer.hg
view fmt-conversion.h @ 22616:09dc129234a0
Matroska seeking fixes
If a relative seek forward went past the last index position the
Matroska demuxer did not seek to any index position. It did however set
the mkv_d->skip_to_timecode variable which meant that the next
fill_buffer() call would read from the current position until the target
position (probably the end of the file). Fix this by changing the code
to seek to the last index position if that is between the current and
target positions.
Also change backwards relative seek to accept an exactly matching index
position (<= vs <) and reorganize the seeking conditionals to allow
making the above change without turning the code into a complete mess.
author | uau |
---|---|
date | Fri, 16 Mar 2007 14:55:41 +0000 |
parents | bf1fbe97cc40 |
children | 5e3665b6213e |
line wrap: on
line source
#ifdef USE_LIBAVUTIL_SO #include <ffmpeg/avutil.h> #else #include "avutil.h" #endif #include "img_format.h" enum PixelFormat imgfmt2pixfmt(int fmt) { switch (fmt) { case IMGFMT_BGR32: return PIX_FMT_RGB32; case IMGFMT_BGR24: return PIX_FMT_BGR24; case IMGFMT_BGR16: return PIX_FMT_BGR565; case IMGFMT_BGR15: return PIX_FMT_BGR555; case IMGFMT_BGR8: return PIX_FMT_BGR8; case IMGFMT_BGR4: return PIX_FMT_BGR4; case IMGFMT_BGR1: case IMGFMT_RGB1: return PIX_FMT_MONOBLACK; case IMGFMT_RG4B: return PIX_FMT_RGB4_BYTE; case IMGFMT_BG4B: return PIX_FMT_BGR4_BYTE; case IMGFMT_RGB32: return PIX_FMT_BGR32; case IMGFMT_RGB24: return PIX_FMT_RGB24; case IMGFMT_RGB16: return PIX_FMT_RGB565; case IMGFMT_RGB15: return PIX_FMT_RGB555; case IMGFMT_RGB8: return PIX_FMT_RGB8; case IMGFMT_RGB4: return PIX_FMT_RGB4; case IMGFMT_YUY2: return PIX_FMT_YUYV422; case IMGFMT_UYVY: return PIX_FMT_UYVY422; case IMGFMT_NV12: return PIX_FMT_NV12; case IMGFMT_NV21: return PIX_FMT_NV21; case IMGFMT_Y800: case IMGFMT_Y8: return PIX_FMT_GRAY8; case IMGFMT_IF09: case IMGFMT_YVU9: return PIX_FMT_YUV410P; case IMGFMT_I420: case IMGFMT_YV12: return PIX_FMT_YUV420P; case IMGFMT_411P: return PIX_FMT_YUV411P; case IMGFMT_422P: return PIX_FMT_YUV422P; case IMGFMT_444P: return PIX_FMT_YUV444P; default: fprintf(stderr, "Unsupported format %s\n", vo_format_name(fmt)); } return PIX_FMT_NONE; }