libavformat/ffm.h
85a6b01d
 /*
  * FFM (ffserver live feed) common header
406792e7
  * Copyright (c) 2001 Fabrice Bellard
85a6b01d
  *
  * This file is part of FFmpeg.
  *
  * FFmpeg 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,
  * 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
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
98790382
 #ifndef AVFORMAT_FFM_H
 #define AVFORMAT_FFM_H
85a6b01d
 
758af986
 #include <stdint.h>
85a6b01d
 #include "avformat.h"
758af986
 #include "avio.h"
85a6b01d
 
 /* The FFM file is made of blocks of fixed size */
 #define FFM_HEADER_SIZE 14
3ee53dab
 #define FFM_PACKET_SIZE 4096
85a6b01d
 #define PACKET_ID       0x666d
 
 /* each packet contains frames (which can span several packets */
3c6a9f66
 #define FRAME_HEADER_SIZE    16
85a6b01d
 #define FLAG_KEY_FRAME       0x01
3c6a9f66
 #define FLAG_DTS             0x02
85a6b01d
 
 enum {
     READ_HEADER,
     READ_DATA,
 };
 
 typedef struct FFMContext {
     /* only reading mode */
bc5c918e
     int64_t write_index, file_size;
85a6b01d
     int read_state;
3c6a9f66
     uint8_t header[FRAME_HEADER_SIZE+4];
85a6b01d
 
     /* read and write */
     int first_packet; /* true if first packet, needed to set the discontinuity tag */
     int packet_size;
     int frame_offset;
fabb990e
     int64_t dts;
85a6b01d
     uint8_t *packet_ptr, *packet_end;
     uint8_t packet[FFM_PACKET_SIZE];
f7c46d25
     int64_t start_time;
85a6b01d
 } FFMContext;
 
98790382
 #endif /* AVFORMAT_FFM_H */