Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | RSS feed

  1. /*
  2.  * FFM (ffserver live feed) common header
  3.  * Copyright (c) 2001 Fabrice Bellard
  4.  *
  5.  * This file is part of FFmpeg.
  6.  *
  7.  * FFmpeg is free software; you can redistribute it and/or
  8.  * modify it under the terms of the GNU Lesser General Public
  9.  * License as published by the Free Software Foundation; either
  10.  * version 2.1 of the License, or (at your option) any later version.
  11.  *
  12.  * FFmpeg is distributed in the hope that it will be useful,
  13.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  14.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  15.  * Lesser General Public License for more details.
  16.  *
  17.  * You should have received a copy of the GNU Lesser General Public
  18.  * License along with FFmpeg; if not, write to the Free Software
  19.  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  20.  */
  21.  
  22. #ifndef AVFORMAT_FFM_H
  23. #define AVFORMAT_FFM_H
  24.  
  25. #include <stdint.h>
  26. #include "avformat.h"
  27. #include "avio.h"
  28.  
  29. /* The FFM file is made of blocks of fixed size */
  30. #define FFM_HEADER_SIZE 14
  31. #define FFM_PACKET_SIZE 4096
  32. #define PACKET_ID       0x666d
  33.  
  34. /* each packet contains frames (which can span several packets */
  35. #define FRAME_HEADER_SIZE    16
  36. #define FLAG_KEY_FRAME       0x01
  37. #define FLAG_DTS             0x02
  38.  
  39. enum {
  40.     READ_HEADER,
  41.     READ_DATA,
  42. };
  43.  
  44. typedef struct FFMContext {
  45.     /* only reading mode */
  46.     int64_t write_index, file_size;
  47.     int read_state;
  48.     uint8_t header[FRAME_HEADER_SIZE+4];
  49.  
  50.     /* read and write */
  51.     int first_packet; /* true if first packet, needed to set the discontinuity tag */
  52.     int packet_size;
  53.     int frame_offset;
  54.     int64_t dts;
  55.     uint8_t *packet_ptr, *packet_end;
  56.     uint8_t packet[FFM_PACKET_SIZE];
  57.     int64_t start_time;
  58. } FFMContext;
  59.  
  60. #endif /* AVFORMAT_FFM_H */
  61.