changeset 36533:80218ddb982f

film: various small code improvements.
author reimar
date Sun, 19 Jan 2014 11:30:06 +0000
parents 2398517e5bda
children 9222b4fbe1c8
files libmpdemux/demux_film.c
diffstat 1 files changed, 11 insertions(+), 26 deletions(-) [+]
line wrap: on
line diff
--- a/libmpdemux/demux_film.c	Sun Jan 19 11:30:05 2014 +0000
+++ b/libmpdemux/demux_film.c	Sun Jan 19 11:30:06 2014 +0000
@@ -63,7 +63,7 @@
 
 static void demux_seek_film(demuxer_t *demuxer, float rel_seek_secs, float audio_delay, int flags)
 {
-  film_data_t *film_data = (film_data_t *)demuxer->priv;
+  film_data_t *film_data = demuxer->priv;
   int new_current_chunk=(flags&SEEK_ABSOLUTE)?0:film_data->current_chunk;
 
   if(flags&SEEK_FACTOR)
@@ -100,14 +100,10 @@
 //     1 = successfully read a packet
 static int demux_film_fill_buffer(demuxer_t *demuxer, demux_stream_t *ds)
 {
-  int i;
-  unsigned char byte_swap;
-  int cvid_size;
   sh_video_t *sh_video = demuxer->video->sh;
   sh_audio_t *sh_audio = demuxer->audio->sh;
-  film_data_t *film_data = (film_data_t *)demuxer->priv;
+  film_data_t *film_data = demuxer->priv;
   film_chunk_t film_chunk;
-  int length_fix_bytes;
   demux_packet_t* dp = NULL;
 
   // see if the end has been reached
@@ -124,6 +120,7 @@
   // (all ones in syncinfo1 indicates an audio chunk)
   if (film_chunk.syncinfo1 == 0xFFFFFFFF)
   {
+   int i;
    if(demuxer->audio->id>=-1){   // audio not disabled
     dp = new_demux_packet(film_chunk.chunk_size);
     if (stream_read(demuxer->stream, dp->buffer, film_chunk.chunk_size) !=
@@ -142,7 +139,7 @@
     else
       for (i = 0; i < film_chunk.chunk_size; i += 2)
       {
-        byte_swap = dp->buffer[i];
+        unsigned char byte_swap = dp->buffer[i];
         dp->buffer[i] = dp->buffer[i + 1];
         dp->buffer[i + 1] = byte_swap;
       }
@@ -174,18 +171,14 @@
     dp = NULL;
    }
   }
-  else
-  {
     // if the demuxer is dealing with CVID data, deal with it a special way
-    if (sh_video->format == mmioFOURCC('c', 'v', 'i', 'd'))
+  else if (sh_video->format == mmioFOURCC('c', 'v', 'i', 'd'))
     {
-      if (film_data->film_version)
-        length_fix_bytes = 2;
-      else
-        length_fix_bytes = 6;
+      int length_fix_bytes = film_data->film_version ? 2 : 6;
+      int cvid_size = film_chunk.chunk_size - length_fix_bytes;
 
       // account for the fix bytes when allocating the buffer
-      dp = new_demux_packet(film_chunk.chunk_size - length_fix_bytes);
+      dp = new_demux_packet(cvid_size);
 
       // these CVID data chunks have a few extra bytes; skip them
       if (stream_read(demuxer->stream, dp->buffer, 10) != 10)
@@ -193,8 +186,7 @@
       stream_skip(demuxer->stream, length_fix_bytes);
 
       if (stream_read(demuxer->stream, dp->buffer + 10,
-        film_chunk.chunk_size - (10 + length_fix_bytes)) !=
-        (film_chunk.chunk_size - (10 + length_fix_bytes)))
+        cvid_size - 10) != cvid_size - 10)
         goto err_out;
 
       dp->pts = film_chunk.pts;
@@ -202,7 +194,6 @@
       dp->flags = (film_chunk.syncinfo1 & 0x80000000) ? 1 : 0;
 
       // fix the CVID chunk size
-      cvid_size = film_chunk.chunk_size - length_fix_bytes;
       dp->buffer[1] = (cvid_size >> 16) & 0xFF;
       dp->buffer[2] = (cvid_size >>  8) & 0xFF;
       dp->buffer[3] = (cvid_size >>  0) & 0xFF;
@@ -217,21 +208,19 @@
         film_chunk.pts,
         film_chunk.chunk_offset, (film_chunk.syncinfo1 & 0x80000000) ? 1 : 0);
     }
-  }
   film_data->current_chunk++;
 
   return 1;
 
 err_out:
   if (dp) free_demux_packet(dp);
-  return NULL;
+  return 0;
 }
 
 static demuxer_t* demux_open_film(demuxer_t* demuxer)
 {
   sh_video_t *sh_video = NULL;
   sh_audio_t *sh_audio = NULL;
-  film_data_t *film_data;
   film_chunk_t film_chunk;
   int header_size;
   unsigned int chunk_type;
@@ -242,11 +231,7 @@
   int counting_chunks;
   unsigned int total_audio_bytes = 0;
 
-  film_data = malloc(sizeof(film_data_t));
-  film_data->total_chunks = 0;
-  film_data->current_chunk = 0;
-  film_data->chunks = NULL;
-  film_data->chunks_per_second = 0;
+  film_data_t *film_data = calloc(1, sizeof(*film_data));
 
   // go back to the beginning
   stream_reset(demuxer->stream);