summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/libffmpeg/xine_decoder.c18
1 files changed, 11 insertions, 7 deletions
diff --git a/src/libffmpeg/xine_decoder.c b/src/libffmpeg/xine_decoder.c
index 733dc1aa6..01cf3527f 100644
--- a/src/libffmpeg/xine_decoder.c
+++ b/src/libffmpeg/xine_decoder.c
@@ -17,7 +17,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*
- * $Id: xine_decoder.c,v 1.82 2002/12/21 14:57:36 esnel Exp $
+ * $Id: xine_decoder.c,v 1.83 2002/12/23 21:26:12 miguelfreitas Exp $
*
* xine decoder plugin using ffmpeg
*
@@ -292,11 +292,13 @@ static void find_sequence_header (ff_video_decoder_t *this,
static void ff_decode_data (video_decoder_t *this_gen, buf_element_t *buf) {
ff_video_decoder_t *this = (ff_video_decoder_t *) this_gen;
int ratio;
+ int codec_type;
#ifdef LOG
printf ("ffmpeg: processing packet type = %08x, buf : %p, buf->decoder_flags=%08x\n",
buf->type, buf, buf->decoder_flags);
#endif
+ codec_type = buf->type & 0xFFFF0000;
if (buf->decoder_flags & BUF_FLAG_PREVIEW) {
@@ -312,8 +314,6 @@ static void ff_decode_data (video_decoder_t *this_gen, buf_element_t *buf) {
if (buf->decoder_flags & BUF_FLAG_HEADER) {
- int codec_type;
-
#ifdef LOG
printf ("ffmpeg: header\n");
#endif
@@ -329,7 +329,6 @@ static void ff_decode_data (video_decoder_t *this_gen, buf_element_t *buf) {
/* init codec */
- codec_type = buf->type & 0xFFFF0000;
this->codec = NULL;
switch (codec_type) {
@@ -440,9 +439,14 @@ static void ff_decode_data (video_decoder_t *this_gen, buf_element_t *buf) {
offset = 0;
while (this->size>0) {
- len = avcodec_decode_video (this->context, this->av_picture,
- &got_picture, &this->buf[offset],
- this->size);
+
+ /* DV frames can be completely skipped */
+ if( codec_type == BUF_VIDEO_DV && this->skipframes )
+ len = this->size;
+ else
+ len = avcodec_decode_video (this->context, this->av_picture,
+ &got_picture, &this->buf[offset],
+ this->size);
if (len<0) {
printf ("ffmpeg: error decompressing frame\n");
this->size=0;