summaryrefslogtreecommitdiffstats
path: root/libavcodec/png_parser.c
diff options
context:
space:
mode:
authorMartin Storsjö <martin@martin.st>2013-12-18 10:39:47 +0200
committerMartin Storsjö <martin@martin.st>2013-12-18 12:12:19 +0200
commitb3189aff8b47fd5ca6a3f07a6a8ab68f8c9d40fe (patch)
tree4d1812d5c5d78facf12555636e56b69d85619226 /libavcodec/png_parser.c
parentd8fd183683b7495566b7e510a6536ae2efe8dfed (diff)
downloadffmpeg-streaming-b3189aff8b47fd5ca6a3f07a6a8ab68f8c9d40fe.zip
ffmpeg-streaming-b3189aff8b47fd5ca6a3f07a6a8ab68f8c9d40fe.tar.gz
png_parser: Fix parsing on big endian
Since pc.state is populated by shifting in from the end of the 32 bit word, the content within pc.state is already in native endian and should not be read with the AV_R{L,B} functions. This was already done correctly for state64 above. This fixes the fate-corepng test on big endian. Signed-off-by: Martin Storsjö <martin@martin.st>
Diffstat (limited to 'libavcodec/png_parser.c')
-rw-r--r--libavcodec/png_parser.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/libavcodec/png_parser.c b/libavcodec/png_parser.c
index 00cbb82..d07f288 100644
--- a/libavcodec/png_parser.c
+++ b/libavcodec/png_parser.c
@@ -78,7 +78,7 @@ static int png_parse(AVCodecParserContext *s, AVCodecContext *avctx,
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->chunk_pos = ppc->pc.frame_start_found = 0;
goto flush;
@@ -87,7 +87,7 @@ static int png_parse(AVCodecParserContext *s, AVCodecContext *avctx,
} else if (ppc->chunk_pos == 7) {
if (ppc->chunk_length >= buf_size - i)
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->chunk_pos = -1;
else
OpenPOWER on IntegriCloud