[Mplayer-cvslog]  CVS: main/libmpdemux demux_audio.c,1.23,1.24 demux_ogg.c,1.34,1.35 extension.c,1.4,1.5
    Dmitry Baryshkov CVS 
    lumag at mplayerhq.hu
       
    Sun Oct  5 00:00:29 CEST 2003
    
        - Previous message: [Mplayer-cvslog] CVS: main/libmpflac - New directory
- Next message: [Mplayer-cvslog]  CVS: main/libmpflac .cvsignore,NONE,1.1 COPYING.Xiph,NONE,1.1 FLAC_assert.h,NONE,1.1 FLAC_export.h,NONE,1.1 FLAC_format.h,NONE,1.1 FLAC_metadata.h,NONE,1.1 FLAC_ordinals.h,NONE,1.1 FLAC_stream_decoder.h,NONE,1.1 Makefile,NONE,1.1 README,NONE,1.1 bitbuffer.c,NONE,1.1 bitmath.c,NONE,1.1 cpu.c,NONE,1.1 crc.c,NONE,1.1 defs.h,NONE,1.1 dither.c,NONE,1.1 dither.h,NONE,1.1 fixed.c,NONE,1.1 format.c,NONE,1.1 lpc.c,NONE,1.1 metadata_object.c,NONE,1.1 private_bitbuffer.h,NONE,1.1 private_bitmath.h,NONE,1.1 private_cpu.h,NONE,1.1 private_crc.h,NONE,1.1 private_fast_float_math_hack.h,NONE,1.1 private_fixed.h,NONE,1.1 private_format.h,NONE,1.1 private_lpc.h,NONE,1.1 private_metadata.h,NONE,1.1 protected_stream_decoder.h,NONE,1.1 replaygain_synthesis.c,NONE,1.1 replaygain_synthesis.h,NONE,1.1 stream_decoder.c,NONE,1.1
-  Messages sorted by: 
              [ date ]
              [ thread ]
              [ subject ]
              [ author ]
         
  
Update of /cvsroot/mplayer/main/libmpdemux
In directory mail:/var/tmp.root/cvs-serv11397/libmpdemux
Modified Files:
	demux_audio.c demux_ogg.c extension.c 
Log Message:
FLAC decoding support via imported libmpflac.
TODO: fix FLAC-in-ogg decoding.
Index: demux_audio.c
===================================================================
RCS file: /cvsroot/mplayer/main/libmpdemux/demux_audio.c,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -r1.23 -r1.24
--- demux_audio.c	20 Sep 2003 12:50:25 -0000	1.23
+++ demux_audio.c	4 Oct 2003 22:00:25 -0000	1.24
@@ -17,6 +17,7 @@
 
 #define MP3 1
 #define WAV 2
+#define fLaC 3
 
 
 #define HDR_SIZE 4
@@ -79,6 +80,10 @@
     } else if((n = mp_get_mp3_header(hdr,&mp3_chans,&mp3_freq)) > 0) {
       frmt = MP3;
       break;
+    } else if( hdr[0] == 'f' && hdr[1] == 'L' && hdr[2] == 'a' && hdr[3] == 'C' ) {
+      frmt = fLaC;
+      stream_skip(s,-4);
+      break;
     }
     // Add here some other audio format detection
     if(step < HDR_SIZE)
@@ -202,6 +207,11 @@
     demuxer->movi_end = s->end_pos;
 //    printf("wav: %X .. %X\n",(int)demuxer->movi_start,(int)demuxer->movi_end);
   } break;
+  case fLaC:
+	    sh_audio->format = mmioFOURCC('f', 'L', 'a', 'C');
+	    demuxer->movi_start = stream_tell(s);
+	    demuxer->movi_end = s->end_pos;
+	    break;
   }
 
   priv = (da_priv_t*)malloc(sizeof(da_priv_t));
@@ -264,6 +274,16 @@
     } break;
   case WAV : {
     int l = sh_audio->wf->nAvgBytesPerSec;
+    demux_packet_t*  dp = new_demux_packet(l);
+    l = stream_read(s,dp->buffer,l);
+    resize_demux_packet(dp, l);
+    priv->last_pts = priv->last_pts < 0 ? 0 : priv->last_pts + l/(float)sh_audio->i_bps;
+    ds->pts = priv->last_pts - (ds_tell_pts(demux->audio)-sh_audio->a_in_buffer_len)/(float)sh_audio->i_bps;
+    ds_add_packet(ds,dp);
+    return 1;
+  }
+  case fLaC: {
+    int l = 65535;
     demux_packet_t*  dp = new_demux_packet(l);
     l = stream_read(s,dp->buffer,l);
     resize_demux_packet(dp, l);
Index: demux_ogg.c
===================================================================
RCS file: /cvsroot/mplayer/main/libmpdemux/demux_ogg.c,v
retrieving revision 1.34
retrieving revision 1.35
diff -u -r1.34 -r1.35
--- demux_ogg.c	4 Oct 2003 17:29:01 -0000	1.34
+++ demux_ogg.c	4 Oct 2003 22:00:25 -0000	1.35
@@ -112,6 +112,7 @@
   int hdr_packets;
   int vorbis;
   int theora;
+  int flac;
 } ogg_stream_t;
 
 typedef struct ogg_demuxer {
@@ -362,6 +363,11 @@
 	}
      }
 #endif /* HAVE_OGGTHEORA */
+# ifdef HAVE_FLAC
+  } else if (os->flac) {
+     /* we pass complete packets to flac, mustn't strip the header! */
+     data = pack->packet;
+#endif /* HAVE_FLAC */
   } else {
     // Find data start
     int16_t hdrlen = (*pack->packet & PACKET_LEN_BITS01)>>6;
@@ -679,6 +685,16 @@
 	    if(verbose>0) print_video_header(sh_v->bih);
 	}
 #   endif /* HAVE_OGGTHEORA */
+#   ifdef HAVE_FLAC
+    } else if (pack.bytes >= 4 && !strncmp (&pack.packet[0], "fLaC", 4)) {
+	sh_a = new_sh_audio(demuxer,ogg_d->num_sub);
+	sh_a->format =  mmioFOURCC('f', 'L', 'a', 'C');
+	n_audio++;
+	ogg_d->subs[ogg_d->num_sub].flac = 1;
+	sh_a->wf = NULL;
+	mp_msg(MSGT_DEMUX,MSGL_V,"OGG : stream %d is FLAC\n",ogg_d->num_sub);
+#   endif /* HAVE_FLAC */
+
       /// Check for old header
     } else if(pack.bytes >= 142 && ! strncmp(&pack.packet[1],"Direct Show Samples embedded in Ogg",35) ) {
 
Index: extension.c
===================================================================
RCS file: /cvsroot/mplayer/main/libmpdemux/extension.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- extension.c	28 Jan 2003 01:18:43 -0000	1.4
+++ extension.c	4 Oct 2003 22:00:25 -0000	1.5
@@ -36,6 +36,8 @@
         { "y4m", DEMUXER_TYPE_Y4M },
         { "mp3", DEMUXER_TYPE_AUDIO },
         { "wav", DEMUXER_TYPE_AUDIO },
+        { "flac", DEMUXER_TYPE_AUDIO },
+        { "fla", DEMUXER_TYPE_AUDIO },
         { "ogg", DEMUXER_TYPE_OGG },
         { "ogm", DEMUXER_TYPE_OGG },
 //        { "pls", DEMUXER_TYPE_PLAYLIST },
    
    
        
	- Previous message: [Mplayer-cvslog] CVS: main/libmpflac - New directory
- Next message: [Mplayer-cvslog]  CVS: main/libmpflac .cvsignore,NONE,1.1 COPYING.Xiph,NONE,1.1 FLAC_assert.h,NONE,1.1 FLAC_export.h,NONE,1.1 FLAC_format.h,NONE,1.1 FLAC_metadata.h,NONE,1.1 FLAC_ordinals.h,NONE,1.1 FLAC_stream_decoder.h,NONE,1.1 Makefile,NONE,1.1 README,NONE,1.1 bitbuffer.c,NONE,1.1 bitmath.c,NONE,1.1 cpu.c,NONE,1.1 crc.c,NONE,1.1 defs.h,NONE,1.1 dither.c,NONE,1.1 dither.h,NONE,1.1 fixed.c,NONE,1.1 format.c,NONE,1.1 lpc.c,NONE,1.1 metadata_object.c,NONE,1.1 private_bitbuffer.h,NONE,1.1 private_bitmath.h,NONE,1.1 private_cpu.h,NONE,1.1 private_crc.h,NONE,1.1 private_fast_float_math_hack.h,NONE,1.1 private_fixed.h,NONE,1.1 private_format.h,NONE,1.1 private_lpc.h,NONE,1.1 private_metadata.h,NONE,1.1 protected_stream_decoder.h,NONE,1.1 replaygain_synthesis.c,NONE,1.1 replaygain_synthesis.h,NONE,1.1 stream_decoder.c,NONE,1.1
-  Messages sorted by: 
              [ date ]
              [ thread ]
              [ subject ]
              [ author ]
         
More information about the MPlayer-cvslog
mailing list