MCPcopy Create free account
hub / github.com/HandBrake/HandBrake / decodeFrame

Function decodeFrame

libhb/decavcodec.c:1693–1810  ·  view source on GitHub ↗

* Decodes a video frame from the specified raw packet data * ('data', 'size'). * The output of this function is stored in 'pv->list', which contains a list * of zero or more decoded packets. */

Source from the content-addressed store, hash-verified

1691 * of zero or more decoded packets.
1692 */
1693static int decodeFrame( hb_work_private_t * pv, packet_info_t * packet_info )
1694{
1695 int got_picture = 0, oldlevel = 0, ret;
1696 AVPacket *avp = pv->pkt;
1697 reordered_data_t * reordered;
1698 AVFrame *recv_frame = pv->frame;
1699
1700 if (pv->hw_frame)
1701 {
1702 recv_frame = pv->hw_frame;
1703 }
1704
1705 if ( global_verbosity_level <= 1 )
1706 {
1707 oldlevel = av_log_get_level();
1708 av_log_set_level( AV_LOG_QUIET );
1709 }
1710
1711 if (packet_info != NULL)
1712 {
1713 avp->data = packet_info->data;
1714 avp->size = packet_info->size;
1715 avp->pts = pv->sequence;
1716 avp->dts = pv->sequence;
1717 reordered = malloc(sizeof(*reordered));
1718 if (reordered != NULL)
1719 {
1720 reordered->sequence = pv->sequence++;
1721 reordered->pts = packet_info->pts;
1722 reordered->scr_sequence = packet_info->scr_sequence;
1723 reordered->new_chap = packet_info->new_chap;
1724 reordered_hash_add(pv, reordered);
1725 }
1726
1727 // libav avcodec video decoder needs AVPacket flagged with
1728 // AV_PKT_FLAG_KEY for some codecs. For example, sequence of
1729 // PNG in a mov container.
1730 if (packet_info->frametype & HB_FRAME_MASK_KEY)
1731 {
1732 avp->flags |= AV_PKT_FLAG_KEY;
1733 }
1734 avp->flags |= packet_info->discard * AV_PKT_FLAG_DISCARD;
1735 }
1736 else
1737 {
1738 avp->data = NULL;
1739 avp->size = 0;
1740 }
1741
1742 if (pv->palette != NULL)
1743 {
1744 uint8_t * palette;
1745 int size;
1746 palette = av_packet_new_side_data(avp, AV_PKT_DATA_PALETTE,
1747 AVPALETTE_SIZE);
1748 size = MIN(pv->palette->size, AVPALETTE_SIZE);
1749 memcpy(palette, pv->palette->data, size);
1750 hb_buffer_close(&pv->palette);

Callers 2

decodePacketFunction · 0.85
decavcodecvWorkFunction · 0.85

Calls 5

reordered_hash_addFunction · 0.85
hb_buffer_closeFunction · 0.85
hb_errorFunction · 0.85
compute_frame_durationFunction · 0.85
filter_videoFunction · 0.85

Tested by

no test coverage detected