diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/libvdpau/nal_parser.c | 10 | ||||
-rw-r--r-- | src/libvdpau/vdpau_h264.c | 8 |
2 files changed, 14 insertions, 4 deletions
diff --git a/src/libvdpau/nal_parser.c b/src/libvdpau/nal_parser.c index 3288387ee..f69a6df7a 100644 --- a/src/libvdpau/nal_parser.c +++ b/src/libvdpau/nal_parser.c @@ -902,49 +902,59 @@ int parse_nal(uint8_t *buf, int buf_len, struct nal_parser *parser) parser->slice = 1; if(nal->slc == NULL || last_nal->slc == NULL) { + printf("A\n"); ret = 1; } if(nal->slc && last_nal->slc && (nal->slc->frame_num != last_nal->slc->frame_num)) { + printf("B\n"); ret = 1; } if(nal->slc && last_nal->slc && (nal->slc->pic_parameter_set_id != last_nal->slc->pic_parameter_set_id)) { + printf("C\n"); ret = 1; } if(nal->slc && last_nal->slc && (nal->slc->field_pic_flag != last_nal->slc->field_pic_flag)) { + printf("D\n"); ret = 1; } if(nal->slc && last_nal->slc && (nal->slc->bottom_field_flag != -1 && last_nal->slc->bottom_field_flag != -1 && nal->slc->bottom_field_flag != last_nal->slc->bottom_field_flag)) { + printf("E\n"); ret = 1; } if(nal->nal_ref_idc != last_nal->nal_ref_idc && (nal->nal_ref_idc == 0 || last_nal->nal_ref_idc == 0)) { + printf("F\n"); ret = 1; } if(nal->sps && nal->slc && last_nal->slc && (nal->sps->pic_order_cnt_type == 0 && last_nal->sps->pic_order_cnt_type == 0 && (nal->slc->pic_order_cnt_lsb != last_nal->slc->pic_order_cnt_lsb || nal->slc->delta_pic_order_cnt_bottom != last_nal->slc->delta_pic_order_cnt_bottom))) { + printf("G\n"); ret = 1; } if(nal->slc && last_nal->slc && (nal->sps->pic_order_cnt_type == 1 && last_nal->sps->pic_order_cnt_type == 1 && (nal->slc->delta_pic_order_cnt[0] != last_nal->slc->delta_pic_order_cnt[0] || nal->slc->delta_pic_order_cnt[1] != last_nal->slc->delta_pic_order_cnt[1]))) { + printf("H\n"); ret = 1; } if(nal->nal_unit_type != last_nal->nal_unit_type && (nal->nal_unit_type == 5 || last_nal->nal_unit_type == 5)) { + printf("I\n"); ret = 1; } if(nal->slc && last_nal->slc && (nal->nal_unit_type == 5 && last_nal->nal_unit_type == 5 && nal->slc->idr_pic_id != last_nal->slc->idr_pic_id)) { + printf("J\n"); ret = 1; } diff --git a/src/libvdpau/vdpau_h264.c b/src/libvdpau/vdpau_h264.c index 93d7ce087..ca27cd4f8 100644 --- a/src/libvdpau/vdpau_h264.c +++ b/src/libvdpau/vdpau_h264.c @@ -180,9 +180,9 @@ static void vdpau_h264_decode_data (video_decoder_t *this_gen, this->nal_parser->current_nal->sps != NULL && this->nal_parser->current_nal->pps != NULL) { - struct pic_parameter_set_rbsp *pps = this->nal_parser->current_nal->pps; - struct seq_parameter_set_rbsp *sps = this->nal_parser->current_nal->sps; - struct slice_header *slc = this->nal_parser->current_nal->slc; + struct pic_parameter_set_rbsp *pps = this->nal_parser->last_nal->pps; + struct seq_parameter_set_rbsp *sps = this->nal_parser->last_nal->sps; + struct slice_header *slc = this->nal_parser->last_nal->slc; /* go and decode a frame */ VdpPictureInfoH264 pic; @@ -232,7 +232,7 @@ static void vdpau_h264_decode_data (video_decoder_t *this_gen, if(status != VDP_STATUS_OK) xprintf(this->xine, XINE_VERBOSITY_LOG, "vdpau_h264: Surface creation failed\n"); - printf("Decode: NUM: %d, REF: %d\n", pic.frame_num, pic.is_reference); + printf("Decode: NUM: %d, REF: %d, BYTES: %d, PTS: %lld\n", pic.frame_num, pic.is_reference, vdp_buffer.bitstream_bytes, buf->pts); status = this->vdpau_accel->vdp_decoder_render(this->decoder, surface, (VdpPictureInfo*)&pic, 1, &vdp_buffer); |