FERRAMENTAS LINUX: O Framework Multimedia open-souce GSteamer chega ao Estável, e adiciona muitas mudanças.

sexta-feira, 5 de maio de 2017

O Framework Multimedia open-souce GSteamer chega ao Estável, e adiciona muitas mudanças.




Está chegando em breve a uma distribuição GNU / Linux perto de você.



O projeto GStreamer, através de Sebastian Dröge, tem o prazer de anunciar hoje a disponibilidade imediata da GStreamer 1.12.0 série estável da estrutura multimídia de código aberto para distribuições GNU / Linux.

O GStreamer 1.12 é uma versão maciça que introduz muitos novos recursos e melhorias, mas o maior deles é o suporte para o Media SDK (Kit de Desenvolvimento de Software) da Intel graças à implementação de um novo plugin msdk para acessar a decodificação e codificação de vídeo acelerada por hardware De várias GPUs Intel em sistemas operacionais GNU / Linux e Microsoft Windows.

O componente x264enc recebeu uma atualização no GStreamer para ser capaz de usar várias versões de biblioteca x264, cada uma sendo compilada para uma profundidade de bits específica em tempo de execução, fornecendo suporte para profundidades de bits múltiplas. Há também multi-threaded conversão e dimensionamento de apoio implementado no videoconvert e videoscale componentes, o que poderia ser bastante útil quando se trata de alta resolução vídeo córregos.

"A equipe do GStreamer tem o orgulho de anunciar um novo lançamento de recursos importantes na série 1.x API estável de sua plataforma multimídia multiplataforma favorita.Como sempre, esta versão é novamente embalado com novos recursos, correções de bugs e outras melhorias. Release series está adicionando novos recursos em cima da série 1.0, 1.2, 1.4, 1.6, 1.8 e 1.10 e faz parte da API e ABI-stable 1.x série de lançamento da estrutura multimídia GStreamer ", leia o anúncio .

H264parse e rtpbin foram atualizados com várias melhorias

Também novo no GStreamer 1.12 lançamento, podemos notar que o componente rtpbin recebeu suporte de pacote para fluxos de entrada eo componente h264parse foi atualizado também para inserir automaticamente delimitadores AU se o software requer que quando saída formato byte-stream, que pode vir Útil para a reprodução de HLS (HTTP Live Streaming) nos sistemas operacionais MacOS e iOS da Apple.

Há centenas de melhorias e correções de bugs com o lançamento do GStreamer 1.12.0, então anexamos o changelog completo abaixo se você quiser estudá-lo e descobrir o que mais é novo, removido ou atualizado. Enquanto isso, sinta-se livre para baixar o GStreamer 1.12 fonte tarball agora se você quiser compilar a estrutura multimídia em seu sistema operacional favorito.

Changelog


Destaques

Novo plugin msdk para o Media SDK da Intel para codificação e decodificação de vídeo acelerada por hardware no hardware gráfico da Intel em Windows ou Linux.

 O x264enc agora pode usar várias versões de biblioteca x264 compiladas para diferentes profundidades de bits em tempo de execução, para fornecer suporte transparente para profundidades de bits múltiplas.

 Videoscale e videoconvert agora suportam escalonamento multi-threaded e conversão, o que é particularmente útil com vídeo de alta resolução.

 H264parse irá agora inserir automaticamente delimitadores AU se necessário quando outputte formato byte-stream, o que melhora a conformidade padrão e é necessário em particular para a reprodução HLS em iOS / macOS.

 Rtpbin adquiriu suporte de pacote para fluxos de entrada

Principais novos recursos e alterações para a nova API Noteworth


A biblioteca de vídeo ganhou suporte para uma série de novos formatos de vídeo:
 GBR_12LE, GBR_12BE, GBRA_12LE, GBRA_12BE (plano 4: 4: 4 RGB / RGBA, 12 bits por canal)
 GBRA_10LE, GBRA_10BE (planar 4: 4: 4: 4 RGBA, 10 bits por canal)
 GBRA (plano 4: 4: 4: 4 ARGB, 8 bits por canal)
 I420_12BE, I420_12LE (planar 4: 2: 0 YUV, 12 bits por canal)
 I422_12BE, I422_12LE (planar 4: 2: 2 YUV, 12 bits por canal)
 Y444_12BE, Y444_12LE (4: 4: 4 YUV planar, 12 bits por canal)
 VYUY (outro formato 4: 2: 2 YUV embalado)

 A API GstPlayer de alto nível foi estendida com funções para tirar instantâneos de vídeo e permitir uma busca precisa. Ele também pode usar o elemento ainda-experimental playbin3 agora.

Novos Elementos


 Msdk: novo plugin para o Media SDK da Intel para a codificação e decodificação de vídeo acelerada por hardware no hardware gráfico da Intel em Windows ou Linux. Isso inclui um codificador / decodificador H.264 (msdkh264dec, msdkh264enc), um codificador / decodificador H.265 (msdkh265dec, msdkh265enc), um codificador / codificador MJPEG (msdkmjpegdec, msdkmjpegenc), um codificador de vídeo MPEG-2 (msdkmpeg2enc) e um Codificador VP8 (msdkvp8enc).

O iqa é um novo plugin de Avaliação de Qualidade de Imagem baseado no DSSIM, semelhante ao elemento de videomeasure antigo (não exportado).

 O elemento faceoverlay, que permite que você sobreponha gráficos SVG sobre um rosto detectado em um fluxo de vídeo, foi portado de 0,10.


 Nosso plugin ffmpeg wrapper agora expõe / mapeia o decodificador de áudio ffmpeg Opus (avdec_opus), bem como o decodificador GoPro CineForm HD / CFHD (avdec_cfhd), e também um analisador / gravador para o formato IVF (avdemux_ivf e avmux_ivf).

O audiobuffersplit é um novo elemento que divide buffers de áudio brutos em buffers de tamanho igual

 Audiomixmatrix é um novo elemento que mistura N: M canais de áudio de acordo com uma matriz de mix configurado.

 O elemento timecodewait foi renomeado para avwait e pode operar em diferentes modos agora.


 O plugin de processamento de vídeo opencv ganhou um novo elemento dewarp que dewarps imagens fisheye

Ttml é um novo plugin para analisar e renderizar legendas no formato Timed Text Markup Language (TTML). No momento, esses elementos não serão autoplugados durante a reprodução de mídia, a menos que a variável de ambiente GST_TTML_AUTOPLUG = 1 esteja definida. Somente o perfil EBU-TT-D é suportado neste ponto.

Novos recursos e adições de elementos

 O x264enc agora pode usar várias versões de biblioteca x264 compiladas para diferentes profundidades de bits em tempo de execução, para fornecer suporte transparente para profundidades de bits múltiplas. Um novo parâmetro de configuração --with-x264-libraries foi adicionado para especificar caminhos adicionais para procurar bibliotecas x264 adicionais para carregar. O plano de fundo é que a biblioteca libx264 é sempre compilada para uma profundidade de bits específica eo elemento x264enc simplesmente suporta a profundidade suportada pela biblioteca subjacente. Agora podemos suportar profundidades múltiplas.


 X264enc também pega o modo de entrelaçamento automaticamente a partir das tampas de entrada agora e passa as informações de entrelaçamento / TFF corretamente para a biblioteca.

Videoscale e videoconvert agora suportam escalonamento multi-threaded e conversão, o que é particularmente útil com vídeo de alta resolução. Isto tem de ser activado explicitamente através da propriedade "n-threads".

 A nova propriedade "rate" do videorate permite definir um fator de velocidade no fluxo de saída

 A coleção de buffer eo agendamento do splitmuxsink foram reescritos para tornar o processamento e a divisão deterministas; Antes que fosse possível para um buffer para acabar em um pedaço de arquivo diferente em execuções diferentes. O splitmuxsink também ganhou um novo sinal "format-location-full" que funciona exatamente como o sinal "format-location" existente apenas que também é passado o primeiro buffer do fluxo primário como argumento, de modo que é possível construir o nome do arquivo baseado Em metadados como o timestamp do buffer ou qualquer GstMeta anexado ao buffer. A nova propriedade "max-size-timecode" permite a divisão baseada no código de tempo. O splitmuxsink agora também iniciará automaticamente um novo arquivo se as tampas de entrada mudarem de forma incompatível.

 Fakesink tem uma nova propriedade "drop-out-of-segment" para não cair fora-de-segmento buffers, que é útil para fins de depuração.


 Identidade ganhou uma propriedade "ts-offset".



Tanto fakesink e identidade agora também imprimir que tipo de metas são anexados a buffers ao imprimir detalhes do buffer através da propriedade "last-message" usada por gst-launch-1.0 -v.

 Multiqueue: feito "min-interleave-time" uma propriedade configurável.

 Os nerds video serão excitados para saber que a neve dos videotestsrc é agora deterministic. Videotestsrc também ganhou algumas novas propriedades para fazer o padrão de bola com base no tempo do sistema, e inverter cores a cada segundo ("animação-modo", "movimento" e "flip" propriedades).

 Oggdemux reprodução reversa deve funcionar novamente agora. Seja bem-vindo.

 Playbin3 e urisourcebin agora têm o buffer ativado por padrão, e a agregação de mensagens em buffer foi corrigida.

 Tcpclientsrc agora tem uma propriedade "timeout"

 Appsink ganhou suporte para listas de buffer. Por razões de compatibilidade com versões anteriores, os usuários precisam habilitar isso explicitamente com gst_app_sink_set_buffer_list_support (), no entanto. Uma vez ativado, um GstSample puxado pode conter uma lista de buffer ou um único buffer.

 A reprodução reversa do splitmuxsrc foi corrigida ea manipulação de fluxos esparsos, como faixas de subtítulos ou faixas de metadados, foi aprimorada.


 Matroskamux adquiriu suporte para áudio Muxing G722; Ele também marca todos os buffers como quadros-chave agora ao transmitir somente áudio, de modo que tcpserversink se comportará corretamente com streams somente de áudio.

O qtmux ganhou suporte para os formatos ProRes 4444 XQ, HEVC / H.265 e CineForm (GoPro) e geralmente grava mais metadados relacionados a stream de vídeo nos cabeçalhos de faixa. Também permite a configuração do tamanho máximo de intercalação em bytes e tempo agora. Para mp4 fragmentado nós sempre escrevemos o átomo tfdt agora como exigido pela especificação DASH.

 O qtdemux suporta as faixas FLAC, xvid, mp2, S16L e CineForm (GoPro) agora, e geralmente tenta mais extrair mais informações relacionadas a vídeo dos cabeçalhos das trilhas, como colorimetria ou detalhes de entrelaçamento. Ele também recebeu um par de correções para o cenário onde upstream opera em formato TIME e alimenta pedaços para qtdemux (por exemplo, DASH ou MSE).

 Audioecho tem duas novas propriedades para aplicar um atraso apenas para determinados canais para criar um efeito surround, em vez de um eco em todos os canais. Isto é útil quando upmixing do estéreo, por exemplo. A propriedade "surround-delay" permite isso, ea propriedade "surround-mask" controla quais canais são considerados canais de som surround neste caso.

 Webrtcdsp ganhou várias novas propriedades para controle de ganho e também expõe a detecção de atividade de voz agora, caso em que ele irá postar mensagens de "atividade de voz" no barramento sempre que o status de detecção de voz muda.


 Os elementos de captura decklink para cartões Decklink Blackmagic viram uma série de melhorias:

Decklinkvideosrc irá publicar uma mensagem de aviso em "sem sinal" e uma mensagem de informação quando o bloqueio de sinal foi (re) adquirido. Existe também uma nova propriedade de "sinal" somente de leitura que pode ser usada para consultar o status de bloqueio de sinal. O sinalizador GAP será definido em buffers que são capturados sem um bloqueio de sinal. O novo drop-no-signal-frames fará decklinkvideosrc soltar todos os buffers que foram capturados sem um sinal de entrada. A propriedade "skip-first-time" fará com que a fonte solte os primeiros buffers, o que é útil, já que alguns dispositivos terão inicialmente buffer de saída com a resolução errada antes que eles consigam descobrir o formato de entrada correto e decidir a saída real cápsulas.

 Decklinkaudiosrc suporta mais do que apenas 2 canais de áudio agora.

 As fontes de captura não usam mais os "timestamps" de hardware que acabam sendo inúteis e, em vez disso, apenas usam o clock do pipeline diretamente.

 Srtpdec agora também tem um readonly "stats" propriedade, assim como srtpenc.


 Rtpbin ganhou o suporte do pacote RTP, tal como utilizado por, e. WebRTC. O primeiro rtpsession terá um elemento rtpssrcdemux dentro dividindo os fluxos com base em seu SSRC e potencialmente despacho para um rtpsession diferente. Como os SSRCs de retransmissão precisam ser mesclados com o fluxo de mídia correspondente, o sinal :: on-bundled-ssrc é emitido no rtpbin para que o aplicativo possa descobrir para qual sessão o SSRC pertence.

Rtprtxqueue ganhou duas novas propriedades expondo as estatísticas de retransmissão ("requests" e "fulfilled-requests")

 Kmssink agora usará o modo preferido para o monitor e processará para o plano base se nada mais tiver definido um modo ainda. Isso também pode ser feito forçosamente em qualquer caso através da nova propriedade "force-modesetting". Além disso, o kmssink agora permite somente as resoluções de conector suportadas como tampas de entrada para evitar o dimensionamento ou posicionamento do fluxo de entrada, já que o kmssink não pode saber se o dimensionamento ou posicionamento seria mais apropriado para o caso de uso.

 Waylandsink agora pode tomar buffers DMAbuf como entrada na presença de um compatível compositor Wayland. Isso permite a transferência de zero-cópia de um decodificador ou fonte que saídas DMAbuf. Ele também irá definir dica de opacidade de superfície para permitir melhor otimização de renderização no compositor.

 Udpsrc pode ser vinculado a mais de uma interface ao unir um grupo multicast, isso é feito por uma vírgula separada lista de interfaces, como multicast-iface = "eth0, eth1".

Movimentos do plug-in

 Dataurisrc movido de gst-plugins-bad para core


 O plugin rawparse contendo os elementos rawaudioparse e rawvideoparse moveu-se de gst-plugins-bad para gst-plugins-base. Estes elementos substituem os antigos elementos videopares e audioces. Eles funcionam da mesma forma, com apenas algumas pequenas mudanças na API. Os antigos elementos herdados ainda existem em gst-plugins-bad, mas podem ser removidos em algum momento no futuro.

Timecodestamper é um elemento que atribui códigos de tempo para buffers de vídeo em forma de GstVideoTimeCodeMetas. Tinha uma propriedade "clock-source" que foi removida porque era bastante inútil na prática. Ele ganhou algumas novas propriedades no entanto: o "first-timecode" propriedade pode ser usado para definir o timecode inicial; Alternativamente "primeiro timecode-to-now" pode ser definido e, em seguida, o tempo atual do sistema no momento em que o primeiro buffer chega é usado como base tempo para os códigos de tempo.

Remoções de plugins

 O plug-in de decodificação louco mp1 / mp2 / mp3 foi removido do gst-plugins-feio, como libmad é licenciado pela GPL, não foi mantido por muito tempo, e há melhores alternativas disponíveis. Use o elemento mpg123audiodec do plugin mpg123 em gst-plugins-ugly ou avdec_mp3 do módulo gst-libav que envolve a biblioteca ffmpeg. Esperamos que possamos mover a decodificação de mp3 para gst-plugins - bom no próximo ciclo, visto que a maioria das patentes em torno do mp3 expirou recentemente ou está prestes a expirar.

 O plugin mímico foi removido do gst-plugins-bad. Ele continha um decodificador e codificador para um codec de vídeo usado pelo MSN Messenger há muitos anos atrás (em uma galáxia muito distante). A biblioteca subjacente é unmaintained e ninguém realmente precisa usar este codec mais. Os vídeos gravados ainda podem ser reproduzidos com o decodificador MIMIC em gst-libav.

Adições diversas da API

 Os modelos de nome de bloco de solicitação passados ​​para gst_element_request_pad () agora podem conter vários especificadores, como, por exemplo, Src_% u_% u.


 Gst_buffer_iterate_meta_filtered () é uma variante de gst_buffer_iterate_meta () que retorna apenas metas do tipo solicitado e salta todos os outros metas.

Gst_pad_task_get_state () obtém o estado atual de uma tarefa de uma maneira thread-safe.

 Gst_uri_get_media_fragment_table () fornece os fragmentos de mídia de um URI como uma tabela de pares key = value.

 Gst_print (), gst_println (), gst_printerr () e gst_printerrln () podem ser usados ​​para imprimir em stdout ou stderr. Essas funções são semelhantes a g_print () e g_printerr (), mas também suportam todos os especificadores de formato adicionais fornecidos pelo sistema de registro do GStreamer, como, por exemplo, GST_PTR_FORMAT.

 Um GstParamSpecArray foi adicionado, para elementos que desejam ter propriedades de tipo de matriz, como o elemento audiomixmatrix, por exemplo. Há também duas novas funções para definir e obter propriedades deste tipo de ligações:
 Gst_util_set_object_array ()
 Gst_util_get_object_array ()

 Várias funções auxiliares foram adicionadas para facilitar a definição ou a obtenção de campos GstStructure que contenham matrizes de estilos maiúsculas ou campos de lista de ligações de idiomas (que normalmente suportam GValueArray mas não conhecem os tipos fundamentais específicos do GStreamer):
 Gst_structure_get_array ()
 Gst_structure_set_array ()
 Gst_structure_get_list ()
 Gst_structure_set_list ()


 Um novo 'tipo dinâmico' registro fábrica tipo foi adicionado para registrar dinamicamente carregável tipos GType. Isso é útil para carregar automaticamente enum / flags tipos que são usados ​​em maiúsculas, como, por exemplo, o GstVideoMultiviewFlagsSet tipo usado em multiview vídeo caps.

Há um novo GstProxyControlBinding para uso com GstController. Isso permite que o proxy interface de controle de uma propriedade em um GstObject para outra propriedade (do mesmo tipo) em outro GstObject. Assim, e. No relacionamento pai-filho, pode ser necessário chamar gst_object_sync_values ​​() na criança e ter uma ligação (definida em outro lugar) no pai atualizar o valor. Isso é usado em glvideomixer e glsinkbin, por exemplo, onde sync_values ​​() no pad ou elemento filho chamará valores_de_sínica () no bloco ou elemento de escaninho exposto.

 Observe que isso não resolve o encaminhamento de propriedade GObject, que deve ser cuidado pela implementação manualmente ou usando GBinding.

 Gst_base_parse_drain () foi tornado público para que as subclasses usassem.

 `Gst_base_sink_set_drop_out_of_segment () 'pode ser usado por subclasses para impedir que GstBaseSink caia buffers que caem fora do segmento.

 Gst_calculate_linear_regression () é uma nova função de utilidade para calcular uma regressão linear.

 Gst_debug_get_stack_trace é uma maneira fácil de recuperar um rastreamento de pilha, que pode ser útil em plugins de rastreamento.

 Alocadores: o dmabuf alocador é agora sub-classable, e há um novo GST_CAPS_FEATURE_MEMORY_DMABUF define.

 As subclasses de decodificador de vídeo podem usar a função recém-adicionada gst_video_decoder_allocate_output_frame_with_params () para passar um GstBufferPoolAcquireParams para o pool de buffer para cada alocação de buffer.

 A API de código de tempo de vídeo ganhou um tipo GstVideoTimeCodeInterval dedicado mais a API relacionada, incluindo funções para adicionar intervalos aos códigos de tempo.


 Há uma nova biblioteca libgstbadallocators-1.0 em gst-plugins-bad, que pode desaparecer novamente em lançamentos futuros depois que a API de interface GstPhysMemoryAllocator tiver sido validada por mais usuários e foi movida para libgstallocators-1.0 a partir de gst-plugins-base.

GstPlayer

Nova API foi adicionada a:

 Obter o número de fluxos de áudio / vídeo / subtítulo:
 Gst_player_media_info_get_number_of_streams ()
 Gst_player_media_info_get_number_of_video_streams ()
 Gst_player_media_info_get_number_of_audio_streams ()
 Gst_player_media_info_get_number_of_subtitle_streams ()

 Ativar a busca precisa: gst_player_config_set_seek_accurate () e gst_player_config_get_seek_accurate ()

 Obter uma imagem do snapshot do vídeo em RGBx, BGRx, JPEG, PNG ou formato nativo: gst_player_get_video_snapshot ()

 Selecionando o uso de um elemento de coletor de vídeo específico (gst_player_video_overlay_video_renderer_new_with_sink ())

 Se a variável de ambiente GST_PLAYER_USE_PLAYBIN3 estiver definida, o GstPlayer usará o elemento ainda experimental experimental playbin3 ea API GstStreams para reprodução.

Alterações diversas

 As tampas de vídeo para vídeo entrelaçado podem conter um campo opcional de "ordem de campo" agora no caso de modo entrelaçado = entrelaçado para sinalizar que a ordem de campo é sempre a mesma ao longo do fluxo. Isso é útil para sinalizar para muxers, como mp4mux. O novo campo é analisado de / para GstVideoInfo, é claro.

 O decodificador de vídeo e as classes base de codificador de vídeo procuram mais facilmente os campos de entrelaçamento de proxy, colorimetria e chroma-site relacionados em bonés.

 O buffer armazenado nos eventos PROTECTION permanece inalterado. Esta é uma mudança de comportamento desde 1.8, especialmente para o elemento mssdemux que usado para decodificar os dados analisados ​​base64 envolvidos nos eventos de proteção emitidos pelo demuxer.

 Os eventos PROTECTION podem agora ser injetados na tubulação a partir da aplicação; Os elementos de origem derivados do GstBaseSrc irão encaminhar aqueles a jusante agora.

 O demuxer DASH agora está analisando corretamente os nós MSPR-2.0 ContentProtection e emite eventos de Proteção de acordo. Aplicativos que dependem desses eventos podem precisar decodificar os dados base64 armazenados no buffer de eventos antes de usá-lo.


 Agora, o registro também pode ser desativado ao definir a variável de ambiente GST_REGISTRY_DISABLE = yes, com efeito semelhante ao switch de tempo de compilação GST_DISABLE_REGISTRY.

A procura de desempenho com descodificadores baseados em gstreamer-vaapi foi melhorada. Ele recriaria o decodificador e superfícies em cada busca que pode ser bastante lento.

 Manipulação mais robusta de mudanças de maiúsculas e minúsculas em elementos baseados em videoagradores, como compositor.

 Muitas correções adaptativas relacionadas ao streaming em toda a placa (DASH, MSS, HLS). Além disso:

 Mssdemux, o demuxer Microsoft Smooth Streaming, tem visto várias correções para córregos ao vivo, relatórios de duração e busca.

 O analisador de manifesto DASH agora extrai os objetos do MS PlayReady ContentProtection dos manifestos e os envia como eventos PROTECTION. Também suporta vários elementos de Período no xml externo agora.

 Gst-libav foi atualizado para ffmpeg 3.3 mas ainda deve funcionar com qualquer versão 3.x.

 GstEncodingProfile foi geralmente aprimorado para que ele possa, por exemplo, ser usado para obter possíveis perfis para uma determinada extensão de arquivo. Agora é possível definir perfis com base em nomes de fábrica de elementos ou usando um caminho para um arquivo .gep contendo um perfil serializado.


 Audioconvert agora pode fazer conversão endianness no local. Todas as outras conversões ainda requerem uma cópia, mas ex. Sinal conversão e alguns outros também poderia ser implementado no local agora.


O novo, experimental playbin3 e urisourcebin elementos tem muitas correções de bugs e melhorias e geralmente deve estar mais perto de uma completa substituição dos elementos antigos.

 Interleave suporta agora> 64 canais.

 elementos OpenCV, grabcut e Retinex foi portado para usar classe base GstOpencvVideoFilter, aumentando a reutilização do código e que fixa mapa tampão / questões unmap. Cópia redundante das imagens foi removida em edgedetect, cvlaplace e cvsobel. Isso vem com várias limpeza e apoio Meson.

Integração OpenGL

 Como de costume, a biblioteca integração GStreamer OpenGL tem visto várias correções e melhorias de desempenho em todo o lugar, e é esperançosamente pronto agora para se tornar API estável e ser movido para gst-plugins-base durante o ciclo de 1,14 liberação.

 A camada de integração GStreamer OpenGL também ganhou suporte para o sistema de janelas Vivante EGL FB, que melhora o desempenho em plataformas como Freescale iMX.6 para aqueles que estão presos com o driver proprietário. O elemento qmlglsink também suporta isso agora se Qt é usado com eglfs ou backend Wayland, e funciona em conjunto com o gstreamer-imx claro.

 Várias melhorias qmlglsrc

Estrutura de rastreamento e aprimoramentos de depuração


 Novos ganchos de rastreamento foram adicionados para rastrear operações GstMiniObject e GstObject ref / unref.

O rastreador de vazamentos de memória pode opcionalmente usá-lo para recuperar rastreamentos de pilha se habilitado com, p. GST_TRACERS = vazamentos (filters = "GstEvent, GstMessage", stack-traces-flags = full)

 A variável de ambiente GST_DEBUG_FILE, que pode ser usada para gravar a saída de log de depuração em um arquivo em vez de imprimi-la em stderr, agora pode conter um padrão de nome, que é útil para testes automatizados e sistemas de integração contínua. Os seguintes especificadores de formato são suportados:
 % P: será substituído pelo PID
 % R: será substituído por um número aleatório, que é útil, por exemplo, ao executar dois processos com o mesmo PID, mas em contêineres diferentes.

Ferramentas

 Gst-inspect-1.0 pode agora listar elementos por tipo com a nova opção de linha de comando --types, p. Gst-inspect-1.0 --types = Audio / Encoder mostrará uma lista de codificadores de áudio.

 Gst-launch-1.0 e gst_parse_launch () ganharam um novo operador (:) que permite ligar todas as almofadas entre dois elementos. Isso é útil nos casos em que o número exato de pads ou tipo de pads não é conhecido de antemão, como no cenário uridecodebin: encodebin, por exemplo. Neste caso, vários links serão criados se o encodebin tem vários perfis compatíveis com a saída de uridecodebin.

 Gst-device-monitor-1.0 agora mostra um snippet gst-launch-1.0 para cada dispositivo que mostra como usá-lo em uma seqüência de pipeline gst-launch-1.0.

Servidor GStreamer RTSP


 O servidor RTSP agora também suporta a autenticação Digest além da autenticação básica.

A classe GstRTSPClient obteve um sinal de pré - * - solicitação e método virtual para cada tipo de solicitação de cliente, emitido no início de cada solicitação rtsp. Esses sinais ou métodos virtuais permitem que o aplicativo valide as solicitações, configure a mídia / fluxo de determinada maneira e também gere códigos de status de erro no caso de um erro ou uma solicitação incorreta.

GStreamer VAAPI

 GstVaapiDisplay agora herda de GstObject, assim, as mensagens de log de exibição do VA são melhores e rastrear o compartilhamento de contexto é mais legível.

 Ao carregar imagens em bruto em uma superfície VA agora VADeriveImages são tentados punho, melhorando o desempenho de upload, se é possível.

 Os decodificadores e o pós-processador agora podem empurrar buffers baseados em dmabuf para downstream sob certas condições. Por exemplo:

 GST_GL_PLATFORM = egl gst-play-1.0 video-sample.mkv --videosink = glimagesink

 Refatorou o envolvimento da superfície VA na memória gstreamer, adicionando bloqueio quando mapeamento e unmapping, e muitas outras correções.

 Agora vaapidecodebin carrega o vaapipostproc dinamicamente. É possível evitar seu uso com a variável de ambiente GST_VAAPI_DISABLE_VPP = 1.

 No que diz respeito aos codificadores: eles têm a classificação primária novamente, uma vez que eles podem descobrir, em tempo de execução, os formatos de cores que podem usar para buffers raw upstream e renegociação tampas é agora possível. Também os encoders empurrar informações codificação downstream via tags.


 Sobre codificadores específicos: adicionado modo de codificação de taxa de bits constante para codificador VP8 e H265 manipula formato de cor P010_10LE.

Em relação aos descodificadores, a operação de descarga foi melhorada, agora o codificador VA interno não é recriado em cada descarga. Também existem várias melhorias na manipulação dos fluxos H264 e H265.

 Os plugins VAAPI tentam criar o seu contexto no GstGL (quando disponível) se não o encontrarem no pipeline, para descobrir que tipo de VA Display devem criar.

 Em relação ao vaapisink para X11, se o back-end informar que é incapaz de renderizar corretamente o formato de cor atual, um pós-processador VA interno, é instanciado (se disponível) e converte o formato de cor.

Serviços de edição do GStreamer e NLE

 Comportamento de transição automática melhorado

 Corrigir algumas corridas na nlecomposição

 Permitir construção com msvc

 Adicionada uma página de manual UNIX para ges-launch

 Alterações da API:
 Adicionado ges_deinit (permitindo que o rastreador de vazamento funcione corretamente)
 Adicionado ges_layer_get_clips_in_interval
 Finalmente esconder símbolos internos que nunca deveriam ter sido expostos

GStreamer validar

 Porta gst-validate-launcher para python 3

 Gst-validate-launcher agora verifica se os bugs na lista negra foram corrigidos no bugzilla e erros se for o caso

 Permitir construção com msvc

 Adicionar capacidade para o lançador executar testes de unidade GStreamer

 Adicionada uma maneira de ativar o rastreador de vazamentos em nossos testes e corrigir vazamentos

 Torne o servidor http multithreaded

 Novo conjunto de testes para executar vários cenários de teste nos vetores de teste DASH-IF

Ligações do GStreamer Python

 Overrides foi adicionado para IntRange, Int64Range, DoubleRange, FractionRange, Array e List. Isso finalmente permite aos programadores Python ler e escrever completamente objetos GstCaps.


Construir e dependências

Os arquivos de compilação do Meson agora são distribuídos em tarballs, para o jhbuild e assim os empacotadores distro podem começar a usá-lo. Observe que o sistema de compilação baseado em Meson não é equivalente a 100% de recurso com o baseado em autotools ainda.

 Alguns nomes de arquivos do plugin foram alterados para coincidir com os nomes dos plugins: por exemplo, o nome do arquivo do plugin de codificação no gst-plugins-base contendo o elemento encodebin foi libgstencodebin.so e foi alterado para libgstencodebin.so. Isso afeta apenas um punhado de plug-ins entre módulos.

 Os desenvolvedores que instalam o GStreamer da fonte e apenas fazem a instalação depois de atualizar o código-fonte, sem fazer a desinstalação primeiro, terão que remover manualmente os arquivos de plug-in instalados do prefixo de instalação ou receberão avisos críticos 'Não é possível registrar o tipo existente' .

 A maior parte da documentação baseada em docbook (FAQ, Manual de Desenvolvimento de Aplicações, Guia do Escritor de Plugins, documentos de design) foi convertida em markdown e transferida para um novo módulo gst-docs. As referências da API da biblioteca gtk-doc e a documentação dos plugins ainda são construídas como parte dos módulos de origem.

 O núcleo GStreamer agora usa opcionalmente libunwind e libdw para gerar backtraces. Isso é útil para os plug-ins de traçador usados ​​durante a depuração e o desenvolvimento.

 Há uma nova biblioteca libgstbadallocators-1.0 em gst-plugins-bad (que pode desaparecer novamente em versões futuras depois que a API da interface GstPhysMemoryAllocator tiver sido validada por mais usuários).

 Os módulos gst-omx e gstreamer-vaapi agora também podem ser construídos usando o sistema de construção do Meson.

 O elemento qtkitvideosrc para macOS foi removido. A API está desativada desde 10.9 e não foi enviada nos binários desde algumas versões.

Melhorias específicas da plataforma
Android

 Androidmedia: adicione suporte para decodificação / codificação de vídeo VP9 e decodificação de áudio Opus (onde suportado)

OS / X e iOS

 Avfvideosrc, que representa uma câmera do iPhone ou, em um Mac, uma sessão screencapture, até agora permitiu que você selecione um dispositivo de entrada por índice de dispositivo apenas. A nova API adiciona a capacidade de selecionar a posição (frente ou verso) eo tipo de dispositivo (grande angular, telefoto, etc.). Além disso, você também pode especificar a orientação (retrato, paisagem, etc.) do videostream.

janelas


 Dx9screencapsrc agora também pode capturar o cursor.

Fonte


Até a próxima!!!

Nenhum comentário:

Postar um comentário