From e2d0dde5f0435f2942961e6ae5f1778516555798 Mon Sep 17 00:00:00 2001 From: Julian Scheel Date: Thu, 11 Jun 2009 17:27:15 +0100 Subject: Fix chroma_format_idc default to be 1, like the spec expects it to be. Minor cleanups. --- src/libvdpau/dpb.c | 1 + src/libvdpau/h264_parser.c | 7 +++++-- 2 files changed, 6 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/libvdpau/dpb.c b/src/libvdpau/dpb.c index d82a2e16d..31677e51c 100644 --- a/src/libvdpau/dpb.c +++ b/src/libvdpau/dpb.c @@ -169,6 +169,7 @@ int dpb_set_unused_ref_picture_bylidx(struct dpb *dpb, uint32_t longterm_idx) if (pic != NULL) do { if (pic->nal->long_term_frame_idx == longterm_idx) { + pic->nal->used_for_long_term_ref = 0; pic->used_for_reference = 0; if(!pic->delayed_output) dpb_remove_picture(dpb, pic); diff --git a/src/libvdpau/h264_parser.c b/src/libvdpau/h264_parser.c index 951195caf..c489d3544 100644 --- a/src/libvdpau/h264_parser.c +++ b/src/libvdpau/h264_parser.c @@ -210,6 +210,7 @@ int parse_nal_header(struct buf_reader *buf, struct nal_parser *parser) struct nal_unit *nal = parser->current_nal; + memset(nal, 0x00, sizeof(struct nal_unit) - sizeof(struct seq_parameter_set_rbsp*) - sizeof(struct pic_parameter_set_rbsp*) - sizeof(struct slice_header*)); nal->nal_ref_idc = (buf->buf[0] >> 5) & 0x03; nal->nal_unit_type = buf->buf[0] & 0x1f; @@ -485,7 +486,8 @@ uint8_t parse_sps(struct buf_reader *buf, struct nal_parser *parser) } } } - } + } else + sps->chroma_format_idc = 1; sps->log2_max_frame_num_minus4 = read_exp_golomb(buf); @@ -783,6 +785,7 @@ uint8_t parse_slice_header(struct buf_reader *buf, struct nal_parser *parser) struct seq_parameter_set_rbsp *sps = nal->sps; struct pic_parameter_set_rbsp *pps = nal->pps; struct slice_header *slc = nal->slc; + memset(slc, 0x00, sizeof(struct slice_header)); if (!sps || !pps) return -1; @@ -963,7 +966,7 @@ void parse_pred_weight_table(struct buf_reader *buf, struct nal_unit *nal) } } - if (slc->slice_type == SLICE_B) { + if ((slc->slice_type % 5) == SLICE_B) { /* FIXME: Being spec-compliant here and loop to num_ref_idx_l0_active_minus1 * will break Divx7 files. Keep this in mind if any other streams are broken */ -- cgit v1.2.3