Сравнение производительности sws_scale с медиаресурсами в реальном времени

Согласно документации cloneElement()

React.cloneElement(
  element,
  [props],
  [...children]
)

Clone и возвратите новый элемент React, используя элемент в качестве отправной точки. Получившийся элемент будет иметь реквизит оригинального элемента с новым реквизитом, сложенным неглубоко. Новые дети заменят существующих детей. ключ и ref из исходного элемента будут сохранены.

React.cloneElement() почти эквивалентен:

{children}

Однако он также сохраняет ссылки. Это означает, что если вы получите ребенка с рефлексией на нем, вы случайно не украдете его у своего предка. Вы получите тот же ref, что и ваш новый элемент.

blockquote>

Итак, cloneElement - это то, что вы использовали бы для предоставления пользовательских реквизитов для детей. Однако в компоненте может быть несколько дочерних элементов, и вам нужно будет зациклиться на нем. Другие варианты подсказок позволяют вам сопоставить их с помощью React.Children.map. Однако React.Children.map, в отличие от React.cloneElement, изменяет ключи добавления Element и дополнительно .$ в качестве префикса. Проверьте этот вопрос для получения дополнительной информации: React.cloneElement внутри React.Children.map вызывает изменение ключей элемента

Если вы хотите этого избежать, вместо этого вы должны пойти на forEach, например

render() {
    const newElements = [];
    React.Children.forEach(this.props.children, 
              child => newElements.push(
                 React.cloneElement(
                   child, 
                   {...this.props, ...customProps}
                )
              )
    )
    return (
        
{newElements}
) }

0
задан Andrey Katkov 13 July 2018 в 23:32
поделиться

1 ответ

Это связано с тем, что большинство видеопроигрывателей делают масштабирование на оборудовании видеокарты. Например, при использовании GL масштабирование (или даже преобразование формата от YUV до RGB) является бесплатным.

1
ответ дан Ronald S. Bultje 17 August 2018 в 12:06
поделиться
  • 1
    Спасибо за разъяснение! Интересно, почему sws_scale не использует GL для таких целей. – Andrey Katkov 14 July 2018 в 10:43
  • 2
    потому что swscale - программный конвертер. Это намерение не для отображения (для этого вы бы использовали GL), но для масштабирования и повторного использования масштабированных буферов для кодирования. Подумайте о центрах обработки данных, которые кодируют видео для потоковых служб. – Ronald S. Bultje 14 July 2018 в 15:27
Другие вопросы по тегам:

Похожие вопросы: