mjpegenc.h 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. /*
  2. * MJPEG encoder
  3. * Copyright (c) 2000, 2001 Fabrice Bellard
  4. * Copyright (c) 2003 Alex Beregszaszi
  5. * Copyright (c) 2003-2004 Michael Niedermayer
  6. *
  7. * Support for external huffman table, various fixes (AVID workaround),
  8. * aspecting, new decode_frame mechanism and apple mjpeg-b support
  9. * by Alex Beregszaszi
  10. *
  11. * This file is part of FFmpeg.
  12. *
  13. * FFmpeg is free software; you can redistribute it and/or
  14. * modify it under the terms of the GNU Lesser General Public
  15. * License as published by the Free Software Foundation; either
  16. * version 2.1 of the License, or (at your option) any later version.
  17. *
  18. * FFmpeg is distributed in the hope that it will be useful,
  19. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  20. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  21. * Lesser General Public License for more details.
  22. *
  23. * You should have received a copy of the GNU Lesser General Public
  24. * License along with FFmpeg; if not, write to the Free Software
  25. * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  26. */
  27. /**
  28. * @file libavcodec/mjpegenc.h
  29. * MJPEG encoder.
  30. */
  31. #ifndef AVCODEC_MJPEGENC_H
  32. #define AVCODEC_MJPEGENC_H
  33. #include "dsputil.h"
  34. #include "mpegvideo.h"
  35. typedef struct MJpegContext {
  36. uint8_t huff_size_dc_luminance[12]; //FIXME use array [3] instead of lumi / chrom, for easier addressing
  37. uint16_t huff_code_dc_luminance[12];
  38. uint8_t huff_size_dc_chrominance[12];
  39. uint16_t huff_code_dc_chrominance[12];
  40. uint8_t huff_size_ac_luminance[256];
  41. uint16_t huff_code_ac_luminance[256];
  42. uint8_t huff_size_ac_chrominance[256];
  43. uint16_t huff_code_ac_chrominance[256];
  44. } MJpegContext;
  45. int ff_mjpeg_encode_init(MpegEncContext *s);
  46. void ff_mjpeg_encode_close(MpegEncContext *s);
  47. void ff_mjpeg_encode_picture_header(MpegEncContext *s);
  48. void ff_mjpeg_encode_picture_trailer(MpegEncContext *s);
  49. void ff_mjpeg_encode_stuffing(PutBitContext *pbc);
  50. void ff_mjpeg_encode_dc(MpegEncContext *s, int val,
  51. uint8_t *huff_size, uint16_t *huff_code);
  52. void ff_mjpeg_encode_mb(MpegEncContext *s, DCTELEM block[6][64]);
  53. #endif /* AVCODEC_MJPEGENC_H */