]> git.sesse.net Git - ffmpeg/blobdiff - libavformat/ffm.h
aiffdec: use av_get_audio_frame_duration() to set block_duration for AIFF-C
[ffmpeg] / libavformat / ffm.h
index ebbf9924800049f6bc4ba3ccd9694e26f769690d..6ce5e0408ceff543df3dfc27338839f2b8345f27 100644 (file)
@@ -1,36 +1,40 @@
 /*
- * FFM (ffserver live feed) common header
- * Copyright (c) 2001 Fabrice Bellard.
+ * FFM (avserver live feed) common header
+ * Copyright (c) 2001 Fabrice Bellard
  *
- * This file is part of FFmpeg.
+ * This file is part of Libav.
  *
- * FFmpeg is free software; you can redistribute it and/or
+ * Libav is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
  * License as published by the Free Software Foundation; either
  * version 2.1 of the License, or (at your option) any later version.
  *
- * FFmpeg is distributed in the hope that it will be useful,
+ * Libav 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
  * Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public
- * License along with FFmpeg; if not, write to the Free Software
+ * License along with Libav; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
-#ifndef FFMPEG_FFM_H
-#define FFMPEG_FFM_H
+#ifndef AVFORMAT_FFM_H
+#define AVFORMAT_FFM_H
 
+#include <stdint.h>
 #include "avformat.h"
+#include "avio.h"
 
 /* The FFM file is made of blocks of fixed size */
 #define FFM_HEADER_SIZE 14
+#define FFM_PACKET_SIZE 4096
 #define PACKET_ID       0x666d
 
 /* each packet contains frames (which can span several packets */
-#define FRAME_HEADER_SIZE    8
+#define FRAME_HEADER_SIZE    16
 #define FLAG_KEY_FRAME       0x01
+#define FLAG_DTS             0x02
 
 enum {
     READ_HEADER,
@@ -39,19 +43,21 @@ enum {
 
 typedef struct FFMContext {
     /* only reading mode */
-    offset_t write_index, file_size;
+    int64_t write_index, file_size;
     int read_state;
-    uint8_t header[FRAME_HEADER_SIZE];
+    uint8_t header[FRAME_HEADER_SIZE+4];
 
     /* read and write */
     int first_packet; /* true if first packet, needed to set the discontinuity tag */
-    int first_frame_in_packet; /* true if first frame in packet, needed to know if PTS information is valid */
     int packet_size;
     int frame_offset;
-    int64_t pts;
+    int64_t dts;
     uint8_t *packet_ptr, *packet_end;
     uint8_t packet[FFM_PACKET_SIZE];
-    int64_t start_time;
 } FFMContext;
 
-#endif /* FFMPEG_FFM_H */
+int64_t ffm_read_write_index(int fd);
+int ffm_write_write_index(int fd, int64_t pos);
+void ffm_set_write_index(AVFormatContext *s, int64_t pos, int64_t file_size);
+
+#endif /* AVFORMAT_FFM_H */