summaryrefslogtreecommitdiff
path: root/src/libreal/xine_real_video_decoder.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/libreal/xine_real_video_decoder.c')
-rw-r--r--src/libreal/xine_real_video_decoder.c94
1 files changed, 47 insertions, 47 deletions
diff --git a/src/libreal/xine_real_video_decoder.c b/src/libreal/xine_real_video_decoder.c
index 314edc489..4977ee889 100644
--- a/src/libreal/xine_real_video_decoder.c
+++ b/src/libreal/xine_real_video_decoder.c
@@ -1,25 +1,25 @@
/*
* Copyright (C) 2000-2008 the xine project
- *
+ *
* This file is part of xine, a free video player.
- *
+ *
* xine is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
- *
+ *
* xine is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
- *
+ *
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
*
* thin layer to use real binary-only codecs in xine
*
- * code inspired by work from Florian Schneider for the MPlayer Project
+ * code inspired by work from Florian Schneider for the MPlayer Project
*/
#ifdef HAVE_CONFIG_H
@@ -149,12 +149,12 @@ static int load_syms_linux (realdec_decoder_t *this, const char *codec_name, con
this->rvyuv_hive_message = dlsym (this->rv_handle, "RV20toYUV420HiveMessage");
this->rvyuv_init = dlsym (this->rv_handle, "RV20toYUV420Init");
this->rvyuv_transform = dlsym (this->rv_handle, "RV20toYUV420Transform");
-
+
if (this->rvyuv_custom_message &&
this->rvyuv_free &&
this->rvyuv_hive_message &&
this->rvyuv_init &&
- this->rvyuv_transform)
+ this->rvyuv_transform)
return 1;
this->rvyuv_custom_message = dlsym (this->rv_handle, "RV40toYUV420CustomMessage");
@@ -162,15 +162,15 @@ static int load_syms_linux (realdec_decoder_t *this, const char *codec_name, con
this->rvyuv_hive_message = dlsym (this->rv_handle, "RV40toYUV420HiveMessage");
this->rvyuv_init = dlsym (this->rv_handle, "RV40toYUV420Init");
this->rvyuv_transform = dlsym (this->rv_handle, "RV40toYUV420Transform");
-
+
if (this->rvyuv_custom_message &&
this->rvyuv_free &&
this->rvyuv_hive_message &&
this->rvyuv_init &&
- this->rvyuv_transform)
+ this->rvyuv_transform)
return 1;
- xprintf (this->stream->xine, XINE_VERBOSITY_LOG,
+ xprintf (this->stream->xine, XINE_VERBOSITY_LOG,
_("libreal: Error resolving symbols! (version incompatibility?)\n"));
return 0;
}
@@ -198,17 +198,17 @@ static int init_codec (realdec_decoder_t *this, buf_element_t *buf) {
return 0;
break;
default:
- xprintf (this->stream->xine, XINE_VERBOSITY_DEBUG,
+ xprintf (this->stream->xine, XINE_VERBOSITY_DEBUG,
"libreal: error, i don't handle buf type 0x%08x\n", buf->type);
_x_abort();
}
init_data.w = _X_BE_16(&buf->content[12]);
init_data.h = _X_BE_16(&buf->content[14]);
-
+
this->width = (init_data.w + 1) & (~1);
this->height = (init_data.h + 1) & (~1);
-
+
if(buf->decoder_flags & BUF_FLAG_ASPECT)
this->ratio = (double)buf->decoder_info[1] / (double)buf->decoder_info[2];
else
@@ -216,15 +216,15 @@ static int init_codec (realdec_decoder_t *this, buf_element_t *buf) {
/* While the framerate is stored in the header it sometimes doesn't bear
* much resemblence to the actual frequency of frames in the file. Hence
- * it's better to just let the engine estimate the frame duration for us */
+ * it's better to just let the engine estimate the frame duration for us */
#if 0
- this->fps = (double) _X_BE_16(&buf->content[22]) +
+ this->fps = (double) _X_BE_16(&buf->content[22]) +
((double) _X_BE_16(&buf->content[24]) / 65536.0);
this->duration = 90000.0 / this->fps;
#endif
-
+
lprintf("this->ratio=%f\n", this->ratio);
-
+
lprintf ("init_data.w=%d(0x%x), init_data.h=%d(0x%x),"
"this->width=%d(0x%x), this->height=%d(0x%x)\n",
init_data.w, init_data.w,
@@ -238,22 +238,22 @@ static int init_codec (realdec_decoder_t *this, buf_element_t *buf) {
init_data.subformat = _X_BE_32(&buf->content[26]);
init_data.format = _X_BE_32(&buf->content[30]);
-
+
#ifdef LOG
printf ("libreal: init_data for rvyuv_init:\n");
xine_hexdump ((char *) &init_data, sizeof (init_data));
-
+
printf ("libreal: buf->content\n");
xine_hexdump (buf->content, buf->size);
-#endif
- lprintf ("init codec %dx%d... %x %x\n",
+#endif
+ lprintf ("init codec %dx%d... %x %x\n",
init_data.w, init_data.h,
init_data.subformat, init_data.format );
-
+
this->context = NULL;
-
- result = this->rvyuv_init (&init_data, &this->context);
-
+
+ result = this->rvyuv_init (&init_data, &this->context);
+
lprintf ("init result: %d\n", result);
/* setup rv30 codec (codec sub-type and image dimensions): */
@@ -266,42 +266,42 @@ static int init_codec (realdec_decoder_t *this, buf_element_t *buf) {
cmsg24[1] = this->height;
for(i = 2, j = 34; j < buf->size; i++, j++)
cmsg24[i] = 4 * buf->content[j];
-
+
#ifdef LOG
printf ("libreal: CustomMessage cmsg_data:\n");
xine_hexdump ((uint8_t *) &cmsg_data, sizeof (cmsg_data));
printf ("libreal: cmsg24:\n");
xine_hexdump ((uint8_t *) cmsg24, (buf->size - 34 + 2) * sizeof(uint32_t));
#endif
-
+
this->rvyuv_custom_message (&cmsg_data, this->context);
}
-
+
(this->stream->video_out->open) (this->stream->video_out, this->stream);
-
+
this->frame_size = this->width * this->height;
this->frame_buffer = xine_xmalloc (this->width * this->height * 3 / 2);
-
+
this->chunk_buffer = calloc(1, BUF_SIZE);
this->chunk_buffer_max = BUF_SIZE;
-
+
return 1;
}
static void realdec_decode_data (video_decoder_t *this_gen, buf_element_t *buf) {
realdec_decoder_t *this = (realdec_decoder_t *) this_gen;
- lprintf ("decode_data, flags=0x%08x, len=%d, pts=%"PRId64" ...\n",
+ lprintf ("decode_data, flags=0x%08x, len=%d, pts=%"PRId64" ...\n",
buf->decoder_flags, buf->size, buf->pts);
if (buf->decoder_flags & BUF_FLAG_PREVIEW) {
/* real_find_sequence_header (&this->real, buf->content, buf->content + buf->size);*/
return;
}
-
+
if (buf->decoder_flags & BUF_FLAG_FRAMERATE) {
this->duration = buf->decoder_info[0];
- _x_stream_info_set(this->stream, XINE_STREAM_INFO_FRAME_DURATION,
+ _x_stream_info_set(this->stream, XINE_STREAM_INFO_FRAME_DURATION,
this->duration);
}
@@ -312,14 +312,14 @@ static void realdec_decode_data (video_decoder_t *this_gen, buf_element_t *buf)
_x_stream_info_set(this->stream, XINE_STREAM_INFO_VIDEO_HANDLED, 0);
} else if (this->decoder_ok && this->context) {
-
+
/* Each frame starts with BUF_FLAG_FRAME_START and ends with
* BUF_FLAG_FRAME_END.
* The last buffer contains the chunk offset table.
*/
if (!(buf->decoder_flags & BUF_FLAG_SPECIAL)) {
-
+
lprintf ("buffer (%d bytes)\n", buf->size);
if (buf->decoder_flags & BUF_FLAG_FRAME_START) {
@@ -329,10 +329,10 @@ static void realdec_decode_data (video_decoder_t *this_gen, buf_element_t *buf)
this->pts = buf->pts;
lprintf ("new frame starting, pts=%"PRId64"\n", this->pts);
}
-
+
if ((this->chunk_buffer_size + buf->size) > this->chunk_buffer_max) {
lprintf("increasing chunk buffer size\n");
-
+
this->chunk_buffer_max *= 2;
this->chunk_buffer = realloc(this->chunk_buffer, this->chunk_buffer_max);
}
@@ -345,9 +345,9 @@ static void realdec_decode_data (video_decoder_t *this_gen, buf_element_t *buf)
} else {
/* end of frame, chunk table */
-
+
lprintf ("special buffer (%d bytes)\n", buf->size);
-
+
if (buf->decoder_info[1] == BUF_SPECIAL_RV_CHUNK_TABLE) {
int result;
@@ -383,7 +383,7 @@ static void realdec_decode_data (video_decoder_t *this_gen, buf_element_t *buf)
xine_hexdump ((uint8_t *) &transform_in, sizeof(rv_xform_in_t));
printf ("libreal: chunk_table:\n");
- xine_hexdump ((uint8_t *) buf->decoder_info_ptr[2],
+ xine_hexdump ((uint8_t *) buf->decoder_info_ptr[2],
2*(buf->decoder_info[2]+1)*sizeof(uint32_t));
#endif
@@ -458,13 +458,13 @@ static void realdec_flush (video_decoder_t *this_gen) {
static void realdec_reset (video_decoder_t *this_gen) {
realdec_decoder_t *this = (realdec_decoder_t *) this_gen;
-
+
this->chunk_buffer_size = 0;
}
static void realdec_discontinuity (video_decoder_t *this_gen) {
realdec_decoder_t *this = (realdec_decoder_t *) this_gen;
-
+
this->pts = 0;
}
@@ -480,21 +480,21 @@ static void realdec_dispose (video_decoder_t *this_gen) {
if (this->rvyuv_free && this->context)
this->rvyuv_free (this->context);
- if (this->rv_handle)
+ if (this->rv_handle)
dlclose (this->rv_handle);
if (this->frame_buffer)
free (this->frame_buffer);
-
+
if (this->chunk_buffer)
free (this->chunk_buffer);
-
+
free (this);
lprintf ("dispose done\n");
}
-static video_decoder_t *open_plugin (video_decoder_class_t *class_gen,
+static video_decoder_t *open_plugin (video_decoder_class_t *class_gen,
xine_stream_t *stream) {
real_class_t *cls = (real_class_t *) class_gen;