13 auto calcScore = [requested](AVSampleFormat format) {
14 if (format == requested)
16 if (format == av_get_planar_sample_fmt(requested))
17 return BestAVScore - 1;
19 const int bps = av_get_bytes_per_sample(format);
20 const int bpsRequested = av_get_bytes_per_sample(requested);
22 if (bps >= bpsRequested)
23 return DefaultAVScore - (bps - bpsRequested);
26 return DefaultAVScore - (bpsRequested - bps) - 1000000;
29 const auto result = findBestAVValue(supportedFormats, calcScore);
30 return result.value_or(requested);
63 int requestedChannelsNumber, uint64_t requestedMask)
65 if ((supportedMask & requestedMask) == requestedMask)
66 return BestAVScore - qPopulationCount(supportedMask & ~requestedMask);
68 return calculateScoreByChannelsCount(supportedChannelsNumber, requestedChannelsNumber);
72 const ChannelLayoutT &requested)
74#if QT_FFMPEG_HAS_AV_CHANNEL_LAYOUT
75 auto calcScore = [&requested](
const ChannelLayoutT &layout) {
76 if (layout == requested)
83 if (layout.order == AV_CHANNEL_ORDER_CUSTOM || requested.order == AV_CHANNEL_ORDER_CUSTOM)
84 return calculateScoreByChannelsCount(layout.nb_channels, requested.nb_channels) - 1000;
86 const auto offset = layout.order == requested.order ? 1 : 100;
88 return calculateScoreByChannelsMask(layout.nb_channels, layout.u.mask,
89 requested.nb_channels, requested.u.mask)
93 const auto result = findBestAVValue(supportedLayouts, calcScore);
94 return result.value_or(requested);
96 auto calcScore = [requested](ChannelLayoutT mask) {
97 return calculateScoreByChannelsMask(qPopulationCount(mask), mask,
98 qPopulationCount(requested), requested);
101 const auto result = findBestAVValue(supportedLayouts, calcScore);
102 return result.value_or(requested);