FFmpeg
|
Flash Screen Video Version 2 encoder. More...
#include <stdio.h>
#include <stdlib.h>
#include <zlib.h>
#include "libavutil/imgutils.h"
#include "avcodec.h"
#include "internal.h"
#include "put_bits.h"
#include "bytestream.h"
Go to the source code of this file.
Data Structures | |
struct | Block |
struct | Palette |
struct | FlashSV2Context |
Macros | |
#define | HAS_IFRAME_IMAGE 0x02 |
#define | HAS_PALLET_INFO 0x01 |
#define | COLORSPACE_BGR 0x00 |
#define | COLORSPACE_15_7 0x10 |
#define | HAS_DIFF_BLOCKS 0x04 |
#define | ZLIB_PRIME_COMPRESS_CURRENT 0x02 |
#define | ZLIB_PRIME_COMPRESS_PREVIOUS 0x01 |
#define | FLASHSV2_DUMB |
Functions | |
static av_cold void | cleanup (FlashSV2Context *s) |
static void | init_blocks (FlashSV2Context *s, Block *blocks, uint8_t *encbuf, uint8_t *databuf) |
static void | reset_stats (FlashSV2Context *s) |
static av_cold int | flashsv2_encode_init (AVCodecContext *avctx) |
static int | new_key_frame (FlashSV2Context *s) |
static int | write_palette (FlashSV2Context *s, uint8_t *buf, int buf_size) |
static int | write_header (FlashSV2Context *s, uint8_t *buf, int buf_size) |
static int | write_block (Block *b, uint8_t *buf, int buf_size) |
static int | encode_zlib (Block *b, uint8_t *buf, unsigned long *buf_size, int comp) |
static int | encode_zlibprime (Block *b, Block *prime, uint8_t *buf, int *buf_size, int comp) |
static int | encode_bgr (Block *b, const uint8_t *src, int stride) |
static unsigned | pixel_color15 (const uint8_t *src) |
static unsigned int | chroma_diff (unsigned int c1, unsigned int c2) |
static int | pixel_color7_fast (Palette *palette, unsigned c15) |
static int | pixel_color7_slow (Palette *palette, unsigned color) |
static unsigned | pixel_bgr (const uint8_t *src) |
static int | write_pixel_15_7 (Palette *palette, uint8_t *dest, const uint8_t *src, int dist) |
static int | update_palette_index (Palette *palette) |
static int | generate_default_palette (Palette *palette) |
static int | generate_optimum_palette (Palette *palette, const uint8_t *image, int width, int height, int stride) |
static int | encode_15_7_sl (Palette *palette, uint8_t *dest, const uint8_t *src, int width, int dist) |
static int | encode_15_7 (Palette *palette, Block *b, const uint8_t *src, int stride, int dist) |
static int | encode_block (FlashSV2Context *s, Palette *palette, Block *b, Block *prev, const uint8_t *src, int stride, int comp, int dist, int keyframe) |
static int | compare_sl (FlashSV2Context *s, Block *b, const uint8_t *src, uint8_t *frame, uint8_t *key, int y, int keyframe) |
static int | mark_all_blocks (FlashSV2Context *s, const uint8_t *src, int stride, int keyframe) |
static int | encode_all_blocks (FlashSV2Context *s, int keyframe) |
static int | write_all_blocks (FlashSV2Context *s, uint8_t *buf, int buf_size) |
static int | write_bitstream (FlashSV2Context *s, const uint8_t *src, int stride, uint8_t *buf, int buf_size, int keyframe) |
static void | recommend_keyframe (FlashSV2Context *s, int *keyframe) |
static int | optimum_block_width (FlashSV2Context *s) |
static int | optimum_block_height (FlashSV2Context *s) |
static int | optimum_use15_7 (FlashSV2Context *s) |
static int | optimum_dist (FlashSV2Context *s) |
static int | reconfigure_at_keyframe (FlashSV2Context *s, const uint8_t *image, int stride) |
static int | flashsv2_encode_frame (AVCodecContext *avctx, AVPacket *pkt, const AVFrame *pict, int *got_packet) |
static av_cold int | flashsv2_encode_end (AVCodecContext *avctx) |
Variables | |
static const unsigned int | default_screen_video_v2_palette [128] |
static const double | block_size_fraction = 1.0 / 300 |
static const double | use15_7_threshold = 8192 |
static const double | color15_7_factor = 100 |
AVCodec | ff_flashsv2_encoder |
Flash Screen Video Version 2 encoder.
Definition in file flashsv2enc.c.
#define HAS_IFRAME_IMAGE 0x02 |
Definition at line 55 of file flashsv2enc.c.
#define HAS_PALLET_INFO 0x01 |
Definition at line 56 of file flashsv2enc.c.
Referenced by write_header().
#define COLORSPACE_BGR 0x00 |
Definition at line 58 of file flashsv2enc.c.
#define COLORSPACE_15_7 0x10 |
Definition at line 59 of file flashsv2enc.c.
Referenced by encode_all_blocks(), and encode_block().
#define HAS_DIFF_BLOCKS 0x04 |
Definition at line 60 of file flashsv2enc.c.
Referenced by encode_all_blocks(), and write_block().
#define ZLIB_PRIME_COMPRESS_CURRENT 0x02 |
Definition at line 61 of file flashsv2enc.c.
Referenced by write_block().
#define ZLIB_PRIME_COMPRESS_PREVIOUS 0x01 |
Definition at line 62 of file flashsv2enc.c.
Referenced by encode_block().
#define FLASHSV2_DUMB |
Definition at line 66 of file flashsv2enc.c.
|
static |
Definition at line 128 of file flashsv2enc.c.
Referenced by flashsv2_encode_end(), flashsv2_encode_init(), and open_input().
|
static |
Definition at line 141 of file flashsv2enc.c.
Referenced by flashsv2_encode_init(), and reconfigure_at_keyframe().
|
static |
Definition at line 167 of file flashsv2enc.c.
Referenced by flashsv2_encode_init(), and reconfigure_at_keyframe().
|
static |
Definition at line 178 of file flashsv2enc.c.
|
static |
Definition at line 260 of file flashsv2enc.c.
Referenced by flashsv2_encode_frame().
|
static |
Definition at line 277 of file flashsv2enc.c.
Referenced by write_header().
|
static |
Definition at line 283 of file flashsv2enc.c.
Referenced by write_bitstream().
Definition at line 313 of file flashsv2enc.c.
Referenced by write_all_blocks().
Definition at line 353 of file flashsv2enc.c.
Referenced by encode_block().
|
static |
Definition at line 359 of file flashsv2enc.c.
Referenced by encode_block().
Definition at line 393 of file flashsv2enc.c.
Referenced by encode_block().
|
inlinestatic |
Definition at line 409 of file flashsv2enc.c.
Referenced by write_pixel_15_7().
|
inlinestatic |
Definition at line 414 of file flashsv2enc.c.
Referenced by pixel_color7_slow(), and write_pixel_15_7().
|
inlinestatic |
Definition at line 424 of file flashsv2enc.c.
Referenced by write_pixel_15_7().
|
static |
Definition at line 429 of file flashsv2enc.c.
Referenced by update_palette_index().
|
inlinestatic |
Definition at line 444 of file flashsv2enc.c.
Referenced by write_pixel_15_7().
|
static |
Definition at line 449 of file flashsv2enc.c.
Referenced by encode_15_7_sl().
|
static |
Definition at line 467 of file flashsv2enc.c.
Referenced by generate_default_palette().
|
static |
Definition at line 510 of file flashsv2enc.c.
Referenced by reconfigure_at_keyframe().
|
static |
Definition at line 518 of file flashsv2enc.c.
Referenced by reconfigure_at_keyframe().
|
inlinestatic |
Definition at line 525 of file flashsv2enc.c.
Referenced by encode_15_7().
|
static |
Definition at line 535 of file flashsv2enc.c.
Referenced by encode_block().
|
static |
Definition at line 552 of file flashsv2enc.c.
Referenced by encode_all_blocks().
|
static |
Definition at line 589 of file flashsv2enc.c.
Referenced by mark_all_blocks().
|
static |
Definition at line 607 of file flashsv2enc.c.
Referenced by write_bitstream().
|
static |
Definition at line 628 of file flashsv2enc.c.
Referenced by write_bitstream().
|
static |
Definition at line 668 of file flashsv2enc.c.
Referenced by write_bitstream().
|
static |
Definition at line 686 of file flashsv2enc.c.
Referenced by flashsv2_encode_frame().
|
static |
Definition at line 715 of file flashsv2enc.c.
Referenced by flashsv2_encode_frame().
|
static |
Definition at line 737 of file flashsv2enc.c.
Referenced by reconfigure_at_keyframe().
|
static |
Definition at line 749 of file flashsv2enc.c.
Referenced by reconfigure_at_keyframe().
|
static |
Definition at line 763 of file flashsv2enc.c.
Referenced by reconfigure_at_keyframe().
|
static |
Definition at line 780 of file flashsv2enc.c.
Referenced by flashsv2_encode_frame().
|
static |
Definition at line 795 of file flashsv2enc.c.
Referenced by flashsv2_encode_frame().
|
static |
Definition at line 851 of file flashsv2enc.c.
|
static |
Definition at line 912 of file flashsv2enc.c.
|
static |
Definition at line 485 of file flashsv2enc.c.
Referenced by generate_default_palette().
|
static |
Definition at line 736 of file flashsv2enc.c.
Referenced by optimum_block_height(), and optimum_block_width().
|
static |
Definition at line 761 of file flashsv2enc.c.
|
static |
Definition at line 778 of file flashsv2enc.c.
Referenced by optimum_dist().
AVCodec ff_flashsv2_encoder |
Definition at line 921 of file flashsv2enc.c.