diff --git a/mythtv/libs/libmythtv/avformatdecoder.cpp b/mythtv/libs/libmythtv/avformatdecoder.cpp
index 548de7b..7ed42ca 100644
a
|
b
|
bool AvFormatDecoder::ProcessVideoPacket(AVStream *curstream, AVPacket *pkt) |
3187 | 3187 | picframe->frameNumber = framesPlayed; |
3188 | 3188 | |
3189 | 3189 | m_parent->ReleaseNextVideoFrame(picframe, temppts); |
3190 | | if (private_dec && mpa_pic.data[3]) |
| 3190 | if (private_dec) |
3191 | 3191 | context->release_buffer(context, &mpa_pic); |
3192 | 3192 | |
3193 | 3193 | decoded_video_frame = picframe; |
… |
… |
bool AvFormatDecoder::ProcessVideoFrame(AVStream *stream, AVFrame *mpa_pic) |
3292 | 3292 | |
3293 | 3293 | picframe->frameNumber = framesPlayed; |
3294 | 3294 | m_parent->ReleaseNextVideoFrame(picframe, temppts); |
3295 | | if (private_dec && mpa_pic->data[3]) |
| 3295 | if (private_dec) |
3296 | 3296 | context->release_buffer(context, mpa_pic); |
3297 | 3297 | |
3298 | 3298 | decoded_video_frame = picframe; |
diff --git a/mythtv/libs/libmythtv/privatedecoder_crystalhd.cpp b/mythtv/libs/libmythtv/privatedecoder_crystalhd.cpp
index 0b9b379..40459b9 100644
a
|
b
|
bool PrivateDecoderCrystalHD::Init(const QString &decoder, |
137 | 137 | .arg(info.fwVersion.version)); |
138 | 138 | } |
139 | 139 | |
140 | | if (BC_70012 == m_device_type) |
141 | | { |
142 | | VERBOSE(VB_IMPORTANT, LOC + "BCM70012 device is currently unsupported."); |
143 | | return false; |
144 | | } |
145 | | |
146 | 140 | BC_HW_CAPS hw_caps; |
147 | 141 | uint32_t codecs; |
148 | 142 | st = DtsGetCapabilities(m_device, &hw_caps); |
… |
… |
int PrivateDecoderCrystalHD::ProcessPacket(AVStream *stream, AVPacket *pkt) |
431 | 425 | VERBOSE(VB_PLAYBACK|VB_EXTRA, LOC + |
432 | 426 | QString("%1 packet buffers queued up").arg(m_packet_buffers.size())); |
433 | 427 | |
| 428 | result = 0; |
434 | 429 | while (m_packet_buffers.size() > 0) |
435 | 430 | { |
436 | 431 | |
… |
… |
int PrivateDecoderCrystalHD::ProcessPacket(AVStream *stream, AVPacket *pkt) |
486 | 481 | if (free_buf) |
487 | 482 | delete buf; |
488 | 483 | |
| 484 | result += buffer->size; |
489 | 485 | free_buffer(buffer); |
490 | 486 | if (!ok) |
491 | 487 | VERBOSE(VB_IMPORTANT, ERR + "Failed to send packet to decoder."); |
492 | | result = buffer->size; |
493 | 488 | } |
494 | 489 | return result; |
495 | 490 | } |
… |
… |
int PrivateDecoderCrystalHD::GetFrame(AVStream *stream, |
518 | 513 | int available = m_decoded_frames.size(); |
519 | 514 | m_decoded_frames_lock.unlock(); |
520 | 515 | if (!available) |
521 | | return result; |
| 516 | return 0; |
522 | 517 | |
523 | 518 | if (avctx->get_buffer(avctx, picture) < 0) |
524 | 519 | { |
… |
… |
int PrivateDecoderCrystalHD::GetFrame(AVStream *stream, |
547 | 542 | picture->atsc_cc_len = frame->qstride; |
548 | 543 | } |
549 | 544 | free_frame(frame); |
550 | | return result; |
| 545 | return 0; |
551 | 546 | } |
552 | 547 | |
553 | 548 | void PrivateDecoderCrystalHD::FetchFrames(void) |
… |
… |
void PrivateDecoderCrystalHD::FillFrame(BC_DTS_PROC_OUT *out) |
665 | 660 | out_width, out_height); |
666 | 661 | avpicture_fill(&img_in, src, in_fmt, |
667 | 662 | in_width, in_height); |
| 663 | if (in_fmt == PIX_FMT_NV12) |
| 664 | { |
| 665 | img_in.data[1] = out->UVbuff; |
| 666 | } |
668 | 667 | |
669 | 668 | if (!(out->PicInfo.flags & VDEC_FLAG_INTERLACED_SRC)) |
670 | 669 | { |
… |
… |
PixelFormat bcmpixfmt_to_pixfmt(BC_OUTPUT_FORMAT fmt) |
932 | 931 | { |
933 | 932 | switch (fmt) |
934 | 933 | { |
935 | | case OUTPUT_MODE420: return PIX_FMT_YUV420P; |
| 934 | case OUTPUT_MODE420: return PIX_FMT_NV12; |
936 | 935 | case OUTPUT_MODE422_YUY2: return PIX_FMT_YUYV422; |
937 | 936 | case OUTPUT_MODE422_UYVY: return PIX_FMT_UYVY422; |
938 | 937 | } |
939 | | return PIX_FMT_YUV420P; |
| 938 | return PIX_FMT_NV12; |
940 | 939 | } |