summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/libvdpau/nal_parser.c10
-rw-r--r--src/libvdpau/vdpau_h264.c8
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);