⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mjpeg.h

📁 mediastreamer2是开源的网络传输媒体流的库
💻 H
字号:
/* * MJPEG encoder and decoder * Copyright (c) 2000, 2001 Fabrice Bellard. * Copyright (c) 2003 Alex Beregszaszi * Copyright (c) 2003-2004 Michael Niedermayer * * Support for external huffman table, various fixes (AVID workaround), * aspecting, new decode_frame mechanism and apple mjpeg-b support *                                  by Alex Beregszaszi * * 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 *//** * @file mjpeg.h * MJPEG encoder and decoder. */#ifndef FFMPEG_MJPEG_H#define FFMPEG_MJPEG_H#include "avcodec.h"#include "bitstream.h"/* JPEG marker codes */typedef enum {    /* start of frame */    SOF0  = 0xc0,       /* baseline */    SOF1  = 0xc1,       /* extended sequential, huffman */    SOF2  = 0xc2,       /* progressive, huffman */    SOF3  = 0xc3,       /* lossless, huffman */    SOF5  = 0xc5,       /* differential sequential, huffman */    SOF6  = 0xc6,       /* differential progressive, huffman */    SOF7  = 0xc7,       /* differential lossless, huffman */    JPG   = 0xc8,       /* reserved for JPEG extension */    SOF9  = 0xc9,       /* extended sequential, arithmetic */    SOF10 = 0xca,       /* progressive, arithmetic */    SOF11 = 0xcb,       /* lossless, arithmetic */    SOF13 = 0xcd,       /* differential sequential, arithmetic */    SOF14 = 0xce,       /* differential progressive, arithmetic */    SOF15 = 0xcf,       /* differential lossless, arithmetic */    DHT   = 0xc4,       /* define huffman tables */    DAC   = 0xcc,       /* define arithmetic-coding conditioning */    /* restart with modulo 8 count "m" */    RST0  = 0xd0,    RST1  = 0xd1,    RST2  = 0xd2,    RST3  = 0xd3,    RST4  = 0xd4,    RST5  = 0xd5,    RST6  = 0xd6,    RST7  = 0xd7,    SOI   = 0xd8,       /* start of image */    EOI   = 0xd9,       /* end of image */    SOS   = 0xda,       /* start of scan */    DQT   = 0xdb,       /* define quantization tables */    DNL   = 0xdc,       /* define number of lines */    DRI   = 0xdd,       /* define restart interval */    DHP   = 0xde,       /* define hierarchical progression */    EXP   = 0xdf,       /* expand reference components */    APP0  = 0xe0,    APP1  = 0xe1,    APP2  = 0xe2,    APP3  = 0xe3,    APP4  = 0xe4,    APP5  = 0xe5,    APP6  = 0xe6,    APP7  = 0xe7,    APP8  = 0xe8,    APP9  = 0xe9,    APP10 = 0xea,    APP11 = 0xeb,    APP12 = 0xec,    APP13 = 0xed,    APP14 = 0xee,    APP15 = 0xef,    JPG0  = 0xf0,    JPG1  = 0xf1,    JPG2  = 0xf2,    JPG3  = 0xf3,    JPG4  = 0xf4,    JPG5  = 0xf5,    JPG6  = 0xf6,    SOF48 = 0xf7,       ///< JPEG-LS    LSE   = 0xf8,       ///< JPEG-LS extension parameters    JPG9  = 0xf9,    JPG10 = 0xfa,    JPG11 = 0xfb,    JPG12 = 0xfc,    JPG13 = 0xfd,    COM   = 0xfe,       /* comment */    TEM   = 0x01,       /* temporary private use for arithmetic coding */    /* 0x02 -> 0xbf reserved */} JPEG_MARKER;static inline void put_marker(PutBitContext *p, int code){    put_bits(p, 8, 0xff);    put_bits(p, 8, code);}#define PREDICT(ret, topleft, top, left, predictor)\    switch(predictor){\        case 1: ret= left; break;\        case 2: ret= top; break;\        case 3: ret= topleft; break;\        case 4: ret= left   +   top - topleft; break;\        case 5: ret= left   + ((top - topleft)>>1); break;\        case 6: ret= top + ((left   - topleft)>>1); break;\        default:\        case 7: ret= (left + top)>>1; break;\    }extern const uint8_t ff_mjpeg_bits_dc_luminance[];extern const uint8_t ff_mjpeg_val_dc_luminance[];extern const uint8_t ff_mjpeg_bits_dc_chrominance[];extern const uint8_t ff_mjpeg_val_dc_chrominance[];extern const uint8_t ff_mjpeg_bits_ac_luminance[];extern const uint8_t ff_mjpeg_val_ac_luminance[];extern const uint8_t ff_mjpeg_bits_ac_chrominance[];extern const uint8_t ff_mjpeg_val_ac_chrominance[];void ff_mjpeg_build_huffman_codes(uint8_t *huff_size, uint16_t *huff_code,                                  const uint8_t *bits_table,                                  const uint8_t *val_table);#endif /* FFMPEG_MJPEG_H */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -