* PNG parser
*/
-#include "libavutil/intreadwrite.h"
-#include "libavutil/common.h"
-
#include "parser.h"
-
-#define PNG_SIGNATURE UINT64_C(0x89504e470d0a1a0a)
-#define MNG_SIGNATURE UINT64_C(0x8a4d4e470d0a1a0a)
+#include "png.h"
- typedef struct PNGParseContext
- {
+ typedef struct PNGParseContext {
ParseContext pc;
- uint32_t index;
- uint32_t chunk_length;
- uint32_t remaining_size;
-
- int chunk_pos; ///< position inside current chunk
- int chunk_length; ///< length of the current chunk
- int remaining_size; ///< remaining size of the current chunk
++ uint32_t chunk_pos; ///< position inside current chunk
++ uint32_t chunk_length; ///< length of the current chunk
++ uint32_t remaining_size; ///< remaining size of the current chunk
} PNGParseContext;
static int png_parse(AVCodecParserContext *s, AVCodecContext *avctx,
}
}
ppc->pc.state64 = state64;
- } else
- if (ppc->remaining_size) {
- i = FFMIN(ppc->remaining_size, buf_size);
- ppc->remaining_size -= i;
- if (ppc->remaining_size)
- goto flush;
- if (ppc->index == -1) {
- next = i;
- goto flush;
- }
+ } else if (ppc->remaining_size) {
+ i = FFMIN(ppc->remaining_size, buf_size);
+ ppc->remaining_size -= i;
+ if (ppc->remaining_size)
+ goto flush;
+ if (ppc->chunk_pos == -1) {
+ next = i;
+ goto flush;
}
+ }
- for (;ppc->pc.frame_start_found && i < buf_size; i++) {
- ppc->pc.state = (ppc->pc.state<<8) | buf[i];
- if (ppc->index == 3) {
+ for (; ppc->pc.frame_start_found && i < buf_size; i++) {
+ ppc->pc.state = (ppc->pc.state << 8) | buf[i];
+ if (ppc->chunk_pos == 3) {
- ppc->chunk_length = AV_RL32(&ppc->pc.state);
+ ppc->chunk_length = ppc->pc.state;
if (ppc->chunk_length > 0x7fffffff) {
- ppc->index = ppc->pc.frame_start_found = 0;
+ ppc->chunk_pos = ppc->pc.frame_start_found = 0;
goto flush;
}
ppc->chunk_length += 4;
- } else if (ppc->index == 7) {
+ } else if (ppc->chunk_pos == 7) {
if (ppc->chunk_length >= buf_size - i)
- ppc->remaining_size = ppc->chunk_length - buf_size + i + 1;
+ ppc->remaining_size = ppc->chunk_length - buf_size + i + 1;
- if (AV_RB32(&ppc->pc.state) == MKTAG('I', 'E', 'N', 'D')) {
+ if (ppc->pc.state == MKBETAG('I', 'E', 'N', 'D')) {
if (ppc->remaining_size)
- ppc->index = -1;
+ ppc->chunk_pos = -1;
else
next = ppc->chunk_length + i + 1;
break;
* Libavcodec version macros.
*/
+#include "libavutil/avutil.h"
+
#define LIBAVCODEC_VERSION_MAJOR 55
-#define LIBAVCODEC_VERSION_MINOR 29
-#define LIBAVCODEC_VERSION_MICRO 0
+#define LIBAVCODEC_VERSION_MINOR 45
- #define LIBAVCODEC_VERSION_MICRO 101
++#define LIBAVCODEC_VERSION_MICRO 102
#define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \
LIBAVCODEC_VERSION_MINOR, \