44     16,  11,  12,  14,  12,  10,  16,  14,
    45     13,  14,  18,  17,  16,  19,  24,  40,
    46     26,  24,  22,  22,  24,  49,  35,  37,
    47     29,  40,  58,  51,  61,  60,  57,  51,
    48     56,  55,  64,  72,  92,  78,  64,  68,
    49     87,  69,  55,  56,  80,  109, 81,  87,
    50     95,  98,  103, 104, 103, 62,  77,  113,
    51     121, 112, 100, 120, 92,  101, 103, 99,
    54     17,  18,  18,  24,  21,  24,  47,  26,
    55     26,  47,  99,  66,  56,  66,  99,  99,
    56     99,  99,  99,  99,  99,  99,  99,  99,
    57     99,  99,  99,  99,  99,  99,  99,  99,
    58     99,  99,  99,  99,  99,  99,  99,  99,
    59     99,  99,  99,  99,  99,  99,  99,  99,
    60     99,  99,  99,  99,  99,  99,  99,  99,
    61     99,  99,  99,  99,  99,  99,  99,  99
    70                                      int table_id, 
const uint8_t *bits_table,
    75     bytestream2_put_byte(p, table_class << 4 | table_id);
    77     for (i = 1; i <= 16; i++) {
    79         bytestream2_put_byte(p, bits_table[i]);
    82     for (i = 0; i < 
n; i++) {
    83         bytestream2_put_byte(p, value_table[i]);
    90     bytestream2_put_byte(pbc, 0xff);
    91     bytestream2_put_byte(pbc, code);
    95                               uint32_t 
h, 
const uint8_t *qtable, 
int nb_qtable,
   113     bytestream2_put_be16(&pbc, 16);
   115     bytestream2_put_be16(&pbc, 0x0201);
   116     bytestream2_put_byte(&pbc, 0);
   117     bytestream2_put_be16(&pbc, 1);
   118     bytestream2_put_be16(&pbc, 1);
   119     bytestream2_put_byte(&pbc, 0);
   120     bytestream2_put_byte(&pbc, 0);
   124         bytestream2_put_be16(&pbc, 4);
   125         bytestream2_put_be16(&pbc, dri);
   130     bytestream2_put_be16(&pbc, 2 + nb_qtable * (1 + 64));
   132     for (i = 0; i < nb_qtable; i++) {
   133         bytestream2_put_byte(&pbc, i);
   143     dht_size_ptr = pbc.
buffer;
   144     bytestream2_put_be16(&pbc, 0);
   155     AV_WB16(dht_size_ptr, dht_size);
   159     bytestream2_put_be16(&pbc, 17); 
   160     bytestream2_put_byte(&pbc, 8); 
   161     bytestream2_put_be16(&pbc, h);
   162     bytestream2_put_be16(&pbc, w);
   163     bytestream2_put_byte(&pbc, 3); 
   164     bytestream2_put_byte(&pbc, 1); 
   165     bytestream2_put_byte(&pbc, (2 << 4) | (type ? 2 : 1)); 
   166     bytestream2_put_byte(&pbc, 0); 
   167     bytestream2_put_byte(&pbc, 2); 
   168     bytestream2_put_byte(&pbc, 1 << 4 | 1); 
   169     bytestream2_put_byte(&pbc, nb_qtable == 2 ? 1 : 0); 
   170     bytestream2_put_byte(&pbc, 3); 
   171     bytestream2_put_byte(&pbc, 1 << 4 | 1); 
   172     bytestream2_put_byte(&pbc, nb_qtable == 2 ? 1 : 0); 
   176     bytestream2_put_be16(&pbc, 12);
   177     bytestream2_put_byte(&pbc, 3);
   178     bytestream2_put_byte(&pbc, 1);
   179     bytestream2_put_byte(&pbc, 0);
   180     bytestream2_put_byte(&pbc, 2);
   181     bytestream2_put_byte(&pbc, 17);
   182     bytestream2_put_byte(&pbc, 3);
   183     bytestream2_put_byte(&pbc, 17);
   184     bytestream2_put_byte(&pbc, 0);
   185     bytestream2_put_byte(&pbc, 63);
   186     bytestream2_put_byte(&pbc, 0);
   198     factor = av_clip(q, 1, 99);
   203         S = 200 - factor * 2;
   205     for (i = 0; i < 128; i++) {
   209         val = av_clip(val, 1, 255);
   268             precision  = 
AV_RB8(buf + 1);    
   276             if (qtable_len > 0) {
   277                 if (len < qtable_len) {
   287                          memcmp(qtables, &jpeg->
qtables[q - 128][0], qtable_len))) {
   289                                "Quantization tables for q=%d changed\n", q);
   290                     } 
else if (!jpeg->
qtables_len[q - 128] && qtable_len <= 128) {
   291                         memcpy(&jpeg->
qtables[q - 128][0], qtables,
   299                            "Invalid RTP/JPEG packet. Quantization tables not found.\n");
   304                            "No quantization tables known for q=%d yet.\n", q);
   307                 qtables    = &jpeg->
qtables[q - 128][0];
   311             if (q == 0 || q > 99) {
   316             qtables    = new_qtables;
   317             qtable_len = 
sizeof(new_qtables);
   333                                             qtable_len / 64, dri);
   341                "Received packet without a start chunk; dropping frame.\n");
   355                "Missing packets; dropping frame.\n");
   372                    "Error occurred when getting frame buffer.\n");
   389     .static_payload_id = 26,
 
const char const char void * val
#define AVERROR_INVALIDDATA
Invalid data found when processing input. 
#define AV_LOG_WARNING
Something somehow does not look correct. 
RTP/JPEG specific private data. 
int index
stream index in AVFormatContext 
static av_always_inline void bytestream2_init_writer(PutByteContext *p, uint8_t *buf, int buf_size)
MJPEG encoder and decoder. 
int avio_open_dyn_buf(AVIOContext **s)
Open a write only memory stream. 
AVIOContext * frame
current frame buffer 
static int jpeg_create_huffman_table(PutByteContext *p, int table_class, int table_id, const uint8_t *bits_table, const uint8_t *value_table)
static void jpeg_put_marker(PutByteContext *pbc, int code)
const uint8_t avpriv_mjpeg_bits_dc_luminance[17]
const RTPDynamicProtocolHandler ff_jpeg_dynamic_handler
static av_always_inline int64_t avio_tell(AVIOContext *s)
ftell() equivalent for AVIOContext. 
void avio_write(AVIOContext *s, const unsigned char *buf, int size)
uint32_t timestamp
current frame timestamp 
static int jpeg_create_header(uint8_t *buf, int size, uint32_t type, uint32_t w, uint32_t h, const uint8_t *qtable, int nb_qtable, int dri)
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered. 
#define RTP_FLAG_MARKER
RTP marker bit was set for this packet. 
uint8_t qtables[128][128]
const uint8_t avpriv_mjpeg_bits_dc_chrominance[17]
static void jpeg_close_context(PayloadContext *jpeg)
static av_always_inline int bytestream2_tell_p(PutByteContext *p)
static av_always_inline unsigned int bytestream2_put_buffer(PutByteContext *p, const uint8_t *src, unsigned int size)
static void create_default_qtables(uint8_t *qtables, uint8_t q)
void ffio_free_dyn_buf(AVIOContext **s)
Free a dynamic buffer. 
static int jpeg_parse_packet(AVFormatContext *ctx, PayloadContext *jpeg, AVStream *st, AVPacket *pkt, uint32_t *timestamp, const uint8_t *buf, int len, uint16_t seq, int flags)
#define AVERROR_PATCHWELCOME
Not yet implemented in FFmpeg, patches welcome. 
const uint8_t avpriv_mjpeg_val_dc[12]
uint8_t * buf
the temporary storage buffer 
static const int factor[16]
const uint8_t avpriv_mjpeg_bits_ac_chrominance[17]
const uint8_t avpriv_mjpeg_val_ac_chrominance[]
void avpriv_report_missing_feature(void *avc, const char *msg,...) av_printf_format(2
Log a generic warning message about a missing feature. 
static const uint8_t default_quantizers[128]
int ff_rtp_finalize_packet(AVPacket *pkt, AVIOContext **dyn_buf, int stream_idx)
Close the dynamic buffer and make a packet from it. 
const uint8_t avpriv_mjpeg_bits_ac_luminance[17]
const uint8_t avpriv_mjpeg_val_ac_luminance[]
int hdr_size
size of the current frame header 
This structure stores compressed data.