diff options
Diffstat (limited to 'contrib/ffmpeg/libavcodec/dvdsubdec.c')
-rw-r--r-- | contrib/ffmpeg/libavcodec/dvdsubdec.c | 19 |
1 files changed, 7 insertions, 12 deletions
diff --git a/contrib/ffmpeg/libavcodec/dvdsubdec.c b/contrib/ffmpeg/libavcodec/dvdsubdec.c index 9a0dd7756..3a93a6076 100644 --- a/contrib/ffmpeg/libavcodec/dvdsubdec.c +++ b/contrib/ffmpeg/libavcodec/dvdsubdec.c @@ -27,11 +27,6 @@ static int dvdsub_init_decoder(AVCodecContext *avctx) return 0; } -static uint16_t getbe16(const uint8_t *p) -{ - return (p[0] << 8) | p[1]; -} - static int get_nibble(const uint8_t *buf, int nibble_offset) { return (buf[nibble_offset >> 1] >> ((1 - (nibble_offset & 1)) << 2)) & 0xf; @@ -142,10 +137,10 @@ static int decode_dvd_subtitles(AVSubtitle *sub_header, sub_header->start_display_time = 0; sub_header->end_display_time = 0; - cmd_pos = getbe16(buf + 2); + cmd_pos = AV_RB16(buf + 2); while ((cmd_pos + 4) < buf_size) { - date = getbe16(buf + cmd_pos); - next_cmd_pos = getbe16(buf + cmd_pos + 2); + date = AV_RB16(buf + cmd_pos); + next_cmd_pos = AV_RB16(buf + cmd_pos + 2); #ifdef DEBUG av_log(NULL, AV_LOG_INFO, "cmd_pos=0x%04x next=0x%04x date=%d\n", cmd_pos, next_cmd_pos, date); @@ -211,8 +206,8 @@ static int decode_dvd_subtitles(AVSubtitle *sub_header, case 0x06: if ((buf_size - pos) < 4) goto fail; - offset1 = getbe16(buf + pos); - offset2 = getbe16(buf + pos + 2); + offset1 = AV_RB16(buf + pos); + offset2 = AV_RB16(buf + pos + 2); #ifdef DEBUG av_log(NULL, AV_LOG_INFO, "offset1=0x%04x offset2=0x%04x\n", offset1, offset2); #endif @@ -249,7 +244,7 @@ static int decode_dvd_subtitles(AVSubtitle *sub_header, sub_header->rects = av_mallocz(sizeof(AVSubtitleRect)); sub_header->num_rects = 1; sub_header->rects[0].rgba_palette = av_malloc(4 * 4); - decode_rle(bitmap, w * 2, w, h / 2, + decode_rle(bitmap, w * 2, w, (h + 1) / 2, buf, offset1 * 2, buf_size); decode_rle(bitmap + w, w * 2, w, h / 2, buf, offset2 * 2, buf_size); @@ -438,7 +433,7 @@ static int dvdsub_parse(AVCodecParserContext *s, if (pc->packet_index == 0) { if (buf_size < 2) return 0; - pc->packet_len = (buf[0] << 8) | buf[1]; + pc->packet_len = AV_RB16(buf); av_freep(&pc->packet); pc->packet = av_malloc(pc->packet_len); } |