Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Multimedia
K3b
Commits
7341cec2
Commit
7341cec2
authored
Aug 09, 2022
by
Mikalai S.
Committed by
Albert Astals Cid
Oct 31, 2022
Browse files
Revert "Remove ffmpeg decoder plugin"
This reverts commit
d20c6fb5
.
parent
d523e6c8
Changes
11
Hide whitespace changes
Inline
Side-by-side
CMakeLists.txt
View file @
7341cec2
...
...
@@ -37,6 +37,7 @@ option(K3B_ENABLE_TAGLIB "Support for reading audio file metadata using Taglib."
option
(
K3B_BUILD_API_DOCS
"Build the API documentation for the K3b libs."
OFF
)
# plugin options
option
(
K3B_BUILD_FFMPEG_DECODER_PLUGIN
"Build FFmpeg decoder plugin"
ON
)
option
(
K3B_BUILD_OGGVORBIS_DECODER_PLUGIN
"Build Ogg-Vorbis decoder plugin"
ON
)
option
(
K3B_BUILD_OGGVORBIS_ENCODER_PLUGIN
"Build Ogg-Vorbis encoder plugin"
ON
)
option
(
K3B_BUILD_MAD_DECODER_PLUGIN
"Build MAD mp3 decoder plugin"
ON
)
...
...
@@ -124,6 +125,69 @@ if(K3B_ENABLE_MUSICBRAINZ)
set
(
ENABLE_MUSICBRAINZ
"
${
MUSICBRAINZ_FOUND
}
"
)
endif
()
if
(
K3B_BUILD_FFMPEG_DECODER_PLUGIN
)
find_package
(
FFmpeg
)
set_package_properties
(
FFmpeg PROPERTIES
PURPOSE
"Needed for the K3b FFmpeg decoder plugin which can decode virtually all audio types."
URL
"https://ffmpeg.org/"
TYPE OPTIONAL
)
if
(
FFMPEG_FOUND
)
include
(
CheckSymbolExists
)
include
(
CMakePushCheckState
)
cmake_push_check_state
()
if
(
CMAKE_COMPILER_IS_GNUCC OR CMAKE_C_COMPILER_ID MATCHES
"Clang"
)
# FindKDE4Internal.cmake screws things up
set
(
CMAKE_REQUIRED_FLAGS
${
CMAKE_REQUIRED_FLAGS
}
-std=c99
)
endif
(
CMAKE_COMPILER_IS_GNUCC OR CMAKE_C_COMPILER_ID MATCHES
"Clang"
)
if
(
FFMPEG_INCLUDE_DIR_OLD_STYLE
)
set
(
CMAKE_REQUIRED_INCLUDES
${
CMAKE_REQUIRED_INCLUDES
}
${
FFMPEG_INCLUDE_DIR_OLD_STYLE
}
)
set
(
FFMPEG_HEADERS ffmpeg/avcodec.h ffmpeg/avformat.h
)
else
(
FFMPEG_INCLUDE_DIR_OLD_STYLE
)
set
(
CMAKE_REQUIRED_INCLUDES
${
CMAKE_REQUIRED_INCLUDES
}
${
FFMPEG_INCLUDE_DIR
}
${
FFMPEG_INCLUDE_DIRS
}
)
set
(
FFMPEG_HEADERS libavcodec/avcodec.h libavformat/avformat.h
)
set
(
CMAKE_REQUIRED_DEFINITIONS
${
CMAKE_REQUIRED_DEFINITIONS
}
-DNEWFFMPEGAVCODECPATH
)
endif
(
FFMPEG_INCLUDE_DIR_OLD_STYLE
)
set
(
CMAKE_REQUIRED_LIBRARIES
${
CMAKE_REQUIRED_LIBRARIES
}
${
FFMPEG_LIBRARIES
}
)
check_symbol_exists
(
avformat_open_input
"
${
FFMPEG_HEADERS
}
"
HAVE_FFMPEG_AVFORMAT_OPEN_INPUT
)
check_symbol_exists
(
av_dump_format
"
${
FFMPEG_HEADERS
}
"
HAVE_FFMPEG_AV_DUMP_FORMAT
)
check_symbol_exists
(
avformat_find_stream_info
"
${
FFMPEG_HEADERS
}
"
HAVE_FFMPEG_AVFORMAT_FIND_STREAM_INFO
)
check_symbol_exists
(
avformat_close_input
"
${
FFMPEG_HEADERS
}
"
HAVE_FFMPEG_AVFORMAT_CLOSE_INPUT
)
check_symbol_exists
(
avcodec_open2
"
${
FFMPEG_HEADERS
}
"
HAVE_FFMPEG_AVCODEC_OPEN2
)
include
(
CheckCSourceCompiles
)
check_c_source_compiles
(
"
#ifdef NEWFFMPEGAVCODECPATH
#include <libavcodec/avcodec.h>
#else
#include <ffmpeg/avcodec.h>
#endif
int main() { enum AVMediaType t = AVMEDIA_TYPE_UNKNOWN; return 0; }
"
HAVE_FFMPEG_AVMEDIA_TYPE
)
check_c_source_compiles
(
"
#ifdef NEWFFMPEGAVCODECPATH
#include <libavcodec/avcodec.h>
#else
#include <ffmpeg/avcodec.h>
#endif
int main() {
#if LIBAVCODEC_BUILD >= AV_VERSION_INT(54,25,0)
# Not needed here. AV_CODEC_ID_MP3 exists.
#else
enum CodecID t = CODEC_ID_MP3;
#endif
return 0;
}
"
HAVE_FFMPEG_CODEC_MP3
)
cmake_pop_check_state
()
endif
(
FFMPEG_FOUND
)
set
(
BUILD_FFMPEG_DECODER_PLUGIN
"
${
FFMPEG_FOUND
}
"
)
endif
(
K3B_BUILD_FFMPEG_DECODER_PLUGIN
)
if
(
K3B_BUILD_FLAC_DECODER_PLUGIN
)
find_package
(
Flac
)
set_package_properties
(
Flac PROPERTIES
...
...
INSTALL.txt
View file @
7341cec2
...
...
@@ -21,9 +21,11 @@ What you need to run K3b:
- the eMovix package
- TagLib by Scott Wheeler for reading Meta data tags
- the musepack (or now mpcdec) library for decoding Musepack audio files
- the ffmpeg library to decode other audio file formats such as wma
- the sndfile library to decode audio file formats such as AIFF or VOC
- the lame library to encode audio files in the mp3 format
- sox to encode audio files in formats such as AIFF or VOC
- a dynamically compiled libffmpeg for wma decoding
- the musicbrainz library for metadata queries for single audio titles
- polkit-qt for K3bSetup (tool for changing permissions of programs and devices)
...
...
cmake/modules/FindFFmpeg.cmake
0 → 100644
View file @
7341cec2
# vim: ts=2 sw=2
# - Try to find the required ffmpeg components(default: AVFORMAT, AVUTIL, AVCODEC)
#
# Once done this will define
# FFMPEG_FOUND - System has the all required components.
# FFMPEG_INCLUDE_DIRS - Include directory necessary for using the required components headers.
# FFMPEG_LIBRARIES - Link these to use the required ffmpeg components.
# FFMPEG_DEFINITIONS - Compiler switches required for using the required ffmpeg components.
#
# For each of the components it will additionally set.
# - AVCODEC
# - AVDEVICE
# - AVFORMAT
# - AVUTIL
# - POSTPROCESS
# - SWSCALE
# the following variables will be defined
# <component>_FOUND - System has <component>
# <component>_INCLUDE_DIRS - Include directory necessary for using the <component> headers
# <component>_LIBRARIES - Link these to use <component>
# <component>_DEFINITIONS - Compiler switches required for using <component>
# <component>_VERSION - The components version
#
# SPDX-FileCopyrightText: 2006 Matthias Kretz <kretz@kde.org>
# SPDX-FileCopyrightText: 2008 Alexander Neundorf <neundorf@kde.org>
# SPDX-FileCopyrightText: 2011 Michael Jansen <kde@michael-jansen.biz>
# SPDX-License-Identifier: BSD-3-Clause
include
(
FindPackageHandleStandardArgs
)
# The default components were taken from a survey over other FindFFMPEG.cmake files
if
(
NOT FFmpeg_FIND_COMPONENTS
)
set
(
FFmpeg_FIND_COMPONENTS AVCODEC AVFORMAT AVUTIL
)
endif
()
#
### Macro: set_component_found
#
# Marks the given component as found if both *_LIBRARIES AND *_INCLUDE_DIRS is present.
#
macro
(
set_component_found _component
)
if
(
${
_component
}
_LIBRARIES AND
${
_component
}
_INCLUDE_DIRS
)
# message(STATUS " - ${_component} found.")
set
(
${
_component
}
_FOUND TRUE
)
else
()
# message(STATUS " - ${_component} not found.")
endif
()
endmacro
()
#
### Macro: find_component
#
# Checks for the given component by invoking pkgconfig and then looking up the libraries and
# include directories.
#
macro
(
find_component _component _pkgconfig _library _header
)
if
(
NOT WIN32
)
# use pkg-config to get the directories and then use these values
# in the FIND_PATH() and FIND_LIBRARY() calls
find_package
(
PkgConfig
)
if
(
PKG_CONFIG_FOUND
)
pkg_check_modules
(
PC_
${
_component
}
${
_pkgconfig
}
)
endif
()
endif
(
NOT WIN32
)
find_path
(
${
_component
}
_INCLUDE_DIRS
${
_header
}
HINTS
${
PC_LIB
${
_component
}
_INCLUDEDIR
}
${
PC_LIB
${
_component
}
_INCLUDE_DIRS
}
PATH_SUFFIXES
ffmpeg
)
find_library
(
${
_component
}
_LIBRARIES NAMES
${
_library
}
HINTS
${
PC_LIB
${
_component
}
_LIBDIR
}
${
PC_LIB
${
_component
}
_LIBRARY_DIRS
}
)
set
(
${
_component
}
_DEFINITIONS
${
PC_
${
_component
}
_CFLAGS_OTHER
}
CACHE STRING
"The
${
_component
}
CFLAGS."
)
set
(
${
_component
}
_VERSION
${
PC_
${
_component
}
_VERSION
}
CACHE STRING
"The
${
_component
}
version number."
)
set_component_found
(
${
_component
}
)
mark_as_advanced
(
${
_component
}
_INCLUDE_DIRS
${
_component
}
_LIBRARIES
${
_component
}
_DEFINITIONS
${
_component
}
_VERSION
)
endmacro
()
# Check for cached results. If there are skip the costly part.
if
(
NOT FFMPEG_LIBRARIES
)
# Check for all possible component.
find_component
(
AVCODEC libavcodec avcodec libavcodec/avcodec.h
)
find_component
(
AVFORMAT libavformat avformat libavformat/avformat.h
)
find_component
(
AVDEVICE libavdevice avdevice libavdevice/avdevice.h
)
find_component
(
AVUTIL libavutil avutil libavutil/avutil.h
)
find_component
(
SWSCALE libswscale swscale libswscale/swscale.h
)
find_component
(
POSTPROC libpostproc postproc libpostproc/postprocess.h
)
# Check if the required components were found and add their stuff to the FFMPEG_* vars.
foreach
(
_component
${
FFmpeg_FIND_COMPONENTS
}
)
if
(
${
_component
}
_FOUND
)
# message(STATUS "Required component ${_component} present.")
set
(
FFMPEG_LIBRARIES
${
FFMPEG_LIBRARIES
}
${${
_component
}
_LIBRARIES
}
)
set
(
FFMPEG_DEFINITIONS
${
FFMPEG_DEFINITIONS
}
${${
_component
}
_DEFINITIONS
}
)
list
(
APPEND FFMPEG_INCLUDE_DIRS
${${
_component
}
_INCLUDE_DIRS
}
)
else
()
# message(STATUS "Required component ${_component} missing.")
endif
()
endforeach
()
# Build the include path with duplicates removed.
if
(
FFMPEG_INCLUDE_DIRS
)
list
(
REMOVE_DUPLICATES FFMPEG_INCLUDE_DIRS
)
endif
()
# cache the vars.
set
(
FFMPEG_INCLUDE_DIRS
${
FFMPEG_INCLUDE_DIRS
}
CACHE STRING
"The FFmpeg include directories."
FORCE
)
set
(
FFMPEG_LIBRARIES
${
FFMPEG_LIBRARIES
}
CACHE STRING
"The FFmpeg libraries."
FORCE
)
set
(
FFMPEG_DEFINITIONS
${
FFMPEG_DEFINITIONS
}
CACHE STRING
"The FFmpeg cflags."
FORCE
)
mark_as_advanced
(
FFMPEG_INCLUDE_DIRS
FFMPEG_LIBRARIES
FFMPEG_DEFINITIONS
)
endif
()
# Now set the noncached _FOUND vars for the components.
foreach
(
_component AVCODEC AVDEVICE AVFORMAT AVUTIL POSTPROCESS SWSCALE
)
set_component_found
(
${
_component
}
)
endforeach
()
# Compile the list of required vars
set
(
_FFmpeg_REQUIRED_VARS FFMPEG_LIBRARIES FFMPEG_INCLUDE_DIRS
)
foreach
(
_component
${
FFmpeg_FIND_COMPONENTS
}
)
list
(
APPEND _FFmpeg_REQUIRED_VARS
${
_component
}
_LIBRARIES
${
_component
}
_INCLUDE_DIRS
)
endforeach
()
# Give a nice error message if some of the required vars are missing.
find_package_handle_standard_args
(
FFmpeg DEFAULT_MSG
${
_FFmpeg_REQUIRED_VARS
}
)
config-k3b.h.cmake
View file @
7341cec2
...
...
@@ -28,3 +28,14 @@
#cmakedefine ICONV_SECOND_ARGUMENT_IS_CONST
#cmakedefine HAVE_FSTAB_H
#cmakedefine HAVE_FFMPEG_AVFORMAT_OPEN_INPUT
#cmakedefine HAVE_FFMPEG_AV_DUMP_FORMAT
#cmakedefine HAVE_FFMPEG_AVFORMAT_FIND_STREAM_INFO
#cmakedefine HAVE_FFMPEG_AVFORMAT_CLOSE_INPUT
#cmakedefine HAVE_FFMPEG_AVCODEC_OPEN2
#cmakedefine HAVE_FFMPEG_AVCODEC_DECODE_AUDIO2
#cmakedefine HAVE_FFMPEG_AVCODEC_DECODE_AUDIO3
#cmakedefine HAVE_FFMPEG_AVCODEC_DECODE_AUDIO4
#cmakedefine HAVE_FFMPEG_AVMEDIA_TYPE
#cmakedefine HAVE_FFMPEG_CODEC_MP3
plugins/decoder/CMakeLists.txt
View file @
7341cec2
...
...
@@ -6,6 +6,10 @@ if(BUILD_OGGVORBIS_DECODER_PLUGIN)
add_subdirectory
(
ogg
)
endif
()
if
(
BUILD_FFMPEG_DECODER_PLUGIN
)
add_subdirectory
(
ffmpeg
)
endif
()
if
(
BUILD_FLAC_DECODER_PLUGIN
)
add_subdirectory
(
flac
)
endif
()
...
...
plugins/decoder/ffmpeg/CMakeLists.txt
0 → 100644
View file @
7341cec2
kcoreaddons_add_plugin
(
k3bffmpegdecoder
SOURCES k3bffmpegdecoder.cpp k3bffmpegwrapper.cpp
INSTALL_NAMESPACE
"k3b"
)
if
(
FFMPEG_INCLUDE_DIR_OLD_STYLE
)
message
(
STATUS
"didn't find new ffmpegcodecpath"
)
target_include_directories
(
k3bffmpegdecoder PRIVATE
${
FFMPEG_INCLUDE_DIR_OLD_STYLE
}
)
else
()
message
(
STATUS
"found new ffmpegcodecpath"
)
target_compile_definitions
(
k3bffmpegdecoder PRIVATE NEWFFMPEGAVCODECPATH
)
target_include_directories
(
k3bffmpegdecoder PRIVATE
${
FFMPEG_INCLUDE_DIR
}
${
FFMPEG_INCLUDE_DIRS
}
)
endif
()
target_link_libraries
(
k3bffmpegdecoder k3bdevice k3blib KF5::I18n
${
FFMPEG_LIBRARIES
}
)
plugins/decoder/ffmpeg/k3bffmpegdecoder.cpp
0 → 100644
View file @
7341cec2
/*
SPDX-FileCopyrightText: 1998-2008 Sebastian Trueg <trueg@k3b.org>
SPDX-License-Identifier: GPL-2.0-or-later
*/
#include
"k3bffmpegdecoder.h"
#include
"k3bffmpegwrapper.h"
#include
<config-k3b.h>
#include
<QDebug>
extern
"C"
{
/*
Recent versions of FFmpeg uses C99 constant macros which are not present in C++ standard.
The macro __STDC_CONSTANT_MACROS allow C++ to use these macros. Although it's not defined by C++ standard
it's supported by many implementations.
See bug 236036 and discussion: https://lists.ffmpeg.org/pipermail/ffmpeg-devel/2010-May/095488.html
*/
#define __STDC_CONSTANT_MACROS
#ifdef NEWFFMPEGAVCODECPATH
#include
<libavcodec/avcodec.h>
#else
#include
<ffmpeg/avcodec.h>
#endif
}
#include
<math.h>
K_PLUGIN_CLASS_WITH_JSON
(
K3bFFMpegDecoderFactory
,
"k3bffmpegdecoder.json"
)
K3bFFMpegDecoderFactory
::
K3bFFMpegDecoderFactory
(
QObject
*
parent
,
const
QVariantList
&
)
:
K3b
::
AudioDecoderFactory
(
parent
)
{
}
K3bFFMpegDecoderFactory
::~
K3bFFMpegDecoderFactory
()
{
}
K3b
::
AudioDecoder
*
K3bFFMpegDecoderFactory
::
createDecoder
(
QObject
*
parent
)
const
{
return
new
K3bFFMpegDecoder
(
parent
);
}
bool
K3bFFMpegDecoderFactory
::
canDecode
(
const
QUrl
&
url
)
{
K3bFFMpegFile
*
file
=
K3bFFMpegWrapper
::
instance
()
->
open
(
url
.
toLocalFile
()
);
if
(
file
)
{
delete
file
;
return
true
;
}
else
{
return
false
;
}
}
K3bFFMpegDecoder
::
K3bFFMpegDecoder
(
QObject
*
parent
)
:
K3b
::
AudioDecoder
(
parent
),
m_file
(
0
)
{
}
K3bFFMpegDecoder
::~
K3bFFMpegDecoder
()
{
}
QString
K3bFFMpegDecoder
::
fileType
()
const
{
return
m_type
;
}
bool
K3bFFMpegDecoder
::
analyseFileInternal
(
K3b
::
Msf
&
frames
,
int
&
samplerate
,
int
&
ch
)
{
m_file
=
K3bFFMpegWrapper
::
instance
()
->
open
(
filename
()
);
if
(
m_file
)
{
// TODO: call addTechnicalInfo
addMetaInfo
(
META_TITLE
,
m_file
->
title
()
);
addMetaInfo
(
META_ARTIST
,
m_file
->
author
()
);
addMetaInfo
(
META_COMMENT
,
m_file
->
comment
()
);
samplerate
=
m_file
->
sampleRate
();
ch
=
m_file
->
channels
();
m_type
=
m_file
->
typeComment
();
frames
=
m_file
->
length
();
// ffmpeg's length information is not reliable at all
// so we have to decode the whole file in order to get the correct length
// char buffer[10*2048];
// int len = 0;
// unsigned long long bytes = 0;
// while( ( len = m_file->read( buffer, 10*2048 ) ) > 0 )
// bytes += len;
// frames = (unsigned long)ceil((double)bytes/2048.0);
// cleanup;
delete
m_file
;
m_file
=
0
;
return
true
;
}
else
return
false
;
}
bool
K3bFFMpegDecoder
::
initDecoderInternal
()
{
if
(
!
m_file
)
m_file
=
K3bFFMpegWrapper
::
instance
()
->
open
(
filename
()
);
return
(
m_file
!=
0
);
}
void
K3bFFMpegDecoder
::
cleanup
()
{
delete
m_file
;
m_file
=
0
;
}
bool
K3bFFMpegDecoder
::
seekInternal
(
const
K3b
::
Msf
&
msf
)
{
if
(
msf
==
0
)
return
initDecoderInternal
();
else
return
m_file
->
seek
(
msf
);
}
int
K3bFFMpegDecoder
::
decodeInternal
(
char
*
_data
,
int
maxLen
)
{
return
m_file
->
read
(
_data
,
maxLen
);
}
#include
"k3bffmpegdecoder.moc"
plugins/decoder/ffmpeg/k3bffmpegdecoder.h
0 → 100644
View file @
7341cec2
/*
SPDX-FileCopyrightText: 1998-2008 Sebastian Trueg <trueg@k3b.org>
SPDX-License-Identifier: GPL-2.0-or-later
*/
#ifndef _K3B_FFMPEG_DECODER_H_
#define _K3B_FFMPEG_DECODER_H_
#include
"k3baudiodecoder.h"
class
K3bFFMpegFile
;
class
K3bFFMpegDecoderFactory
:
public
K3b
::
AudioDecoderFactory
{
Q_OBJECT
public:
K3bFFMpegDecoderFactory
(
QObject
*
parent
,
const
QVariantList
&
args
);
~
K3bFFMpegDecoderFactory
()
override
;
bool
canDecode
(
const
QUrl
&
filename
)
override
;
int
pluginSystemVersion
()
const
override
{
return
K3B_PLUGIN_SYSTEM_VERSION
;
}
bool
multiFormatDecoder
()
const
override
{
return
true
;
}
K3b
::
AudioDecoder
*
createDecoder
(
QObject
*
parent
=
0
)
const
override
;
};
class
K3bFFMpegDecoder
:
public
K3b
::
AudioDecoder
{
Q_OBJECT
public:
explicit
K3bFFMpegDecoder
(
QObject
*
parent
=
0
);
~
K3bFFMpegDecoder
()
override
;
QString
fileType
()
const
override
;
void
cleanup
()
override
;
protected:
bool
analyseFileInternal
(
K3b
::
Msf
&
frames
,
int
&
samplerate
,
int
&
ch
)
override
;
bool
initDecoderInternal
()
override
;
bool
seekInternal
(
const
K3b
::
Msf
&
)
override
;
int
decodeInternal
(
char
*
_data
,
int
maxLen
)
override
;
private:
K3bFFMpegFile
*
m_file
;
QString
m_type
;
};
#endif
plugins/decoder/ffmpeg/k3bffmpegdecoder.json
0 → 100644
View file @
7341cec2
{
"KPlugin"
:
{
"Authors"
:
[
{
"Email"
:
"trueg@k3b.org"
,
"Name"
:
"Sebastian Trueg"
,
"Name[ca@valencia]"
:
"Sebastian Trueg"
,
"Name[ca]"
:
"Sebastian Trueg"
,
"Name[cs]"
:
"Sebastian Trueg"
,
"Name[da]"
:
"Sebastian Trueg"
,
"Name[de]"
:
"Sebastian Trueg"
,
"Name[el]"
:
"Sebastian Trueg"
,
"Name[en_GB]"
:
"Sebastian Trueg"
,
"Name[es]"
:
"Sebastian Trueg"
,
"Name[eu]"
:
"Sebastian Trueg"
,
"Name[fi]"
:
"Sebastian Trueg"
,
"Name[fr]"
:
"Sebastian Trueg"
,
"Name[hu]"
:
"Sebastian Trueg"
,
"Name[ia]"
:
"Sebastian Trueg"
,
"Name[it]"
:
"Sebastian Trueg"
,
"Name[ko]"
:
"Sebastian Trueg"
,
"Name[nl]"
:
"Sebastian Trueg"
,
"Name[pl]"
:
"Sebastian Trueg"
,
"Name[pt]"
:
"Sebastian Trueg"
,
"Name[pt_BR]"
:
"Sebastian Trueg"
,
"Name[sl]"
:
"Sebastian Trueg"
,
"Name[sv]"
:
"Sebastian Trueg"
,
"Name[uk]"
:
"Sebastian Trueg"
,
"Name[x-test]"
:
"xxSebastian Truegxx"
,
"Name[zh_CN]"
:
"Sebastian Trueg"
}
],
"Category"
:
"AudioDecoder"
,
"Description"
:
"Decoding module to decode WMA files"
,
"Description[ar]"
:
"وحدة فكّ ترميز لفكّ ترميز ملفّات WMA"
,
"Description[bs]"
:
"Modul dekodiranja za dekodiranje WMA datoteke"
,
"Description[ca@valencia]"
:
"Mòdul de descodificació per a descodificar fitxers WMA"
,
"Description[ca]"
:
"Mòdul de descodificació per a descodificar fitxers WMA"
,
"Description[cs]"
:
"Modul pro dekódování souborů WMA"
,
"Description[da]"
:
"Dekodermodul til dekodning af WMA-filer"
,
"Description[de]"
:
"Dekodierungsmodul für WMA-Dateien"
,
"Description[el]"
:
"Άρθρωμα αποκωδικοποίησης αρχείων WMA"
,
"Description[en_GB]"
:
"Decoding module to decode WMA files"
,
"Description[es]"
:
"Descodificando módulo para descodificar archivos WMA"
,
"Description[et]"
:
"WMA-failide dekodeerimise moodul"
,
"Description[eu]"
:
"WMA fitxategiak deskodetzeko modulua"
,
"Description[fi]"
:
"WMA-tiedostojen purkumoduuli"
,
"Description[fr]"
:
"Module de décodage pour des fichiers au format « WMA »"
,
"Description[gl]"
:
"Módulo de descodificación para descodificar ficheiros WMA"
,
"Description[hu]"
:
"Dekódolómodul WMA-fájlok dekódolásához"
,
"Description[ia]"
:
"Modulo decifrante per decifrar files WMA"
,
"Description[id]"
:
"Modul decoding untuk mendekode file-file WMA"
,
"Description[it]"
:
"Decodifica modulare per i file WMA"
,
"Description[ko]"
:
"WMA 파일 디코딩 모듈"
,
"Description[nl]"
:
"Module voor het decoderen van WMA-bestanden"
,
"Description[nn]"
:
"Modul for dekoding av WMA-filer"
,
"Description[pl]"
:
"Moduł dekodujący pliki WMA"
,
"Description[pt]"
:
"Módulo de descodificação de ficheiros WMA"
,
"Description[pt_BR]"
:
"Módulo de decodificação de arquivos WMA"
,
"Description[ru]"
:
"Модуль декодирования файлов WMA"
,
"Description[sk]"
:
"Modul pre dekódovanie súborov WMA"
,
"Description[sl]"
:
"Dekodirni modul za dekodiranje datotek WMA"
,
"Description[sr@ijekavian]"
:
"Модул за декодирање ВМА фајлова"
,
"Description[sr@ijekavianlatin]"
:
"Modul za dekodiranje WMA fajlova"
,
"Description[sr@latin]"
:
"Modul za dekodiranje WMA fajlova"
,
"Description[sr]"
:
"Модул за декодирање ВМА фајлова"
,
"Description[sv]"
:
"Avkodningsmodul för att avkoda WMA-filer"
,
"Description[tr]"
:
"WMA dosyalarının kodlarını çözmek için çözücü modül"
,
"Description[uk]"
:
"Модуль для декодування файлів WMA"
,
"Description[x-test]"
:
"xxDecoding module to decode WMA filesxx"
,
"Description[zh_CN]"
:
"用于解码 WMA 文件的解码模块"
,
"Description[zh_TW]"
:
"解碼 WMA 檔案格式的模組"
,
"EnabledByDefault"
:
true
,
"Icon"
:
"preferences-plugin"
,
"Id"
:
"k3bffmpegdecoder"
,
"License"
:
"GPL"
,
"Name"
:
"K3b FFMpeg Decoder"
,
"Name[bg]"
:
"FFMpeg декодер за K3b"
,
"Name[bs]"
:
"K3b FFMpeg Dekoder"
,
"Name[ca@valencia]"
:
"Descodificador FFMpeg del K3b"
,
"Name[ca]"
:
"Descodificador FFMpeg del K3b"
,
"Name[cs]"
:
"FFMpeg dekodér K3b"
,
"Name[csb]"
:
"Dekòder FFMpeg dlô K3b"
,
"Name[da]"
:
"K3b FFMpeg-dekoder"
,
"Name[de]"
:
"FFMpeg-Dekodierer"
,
"Name[el]"
:
"Αποκωδικοποιητής FFMpeg του K3b"
,
"Name[en_GB]"
:
"K3b FFMpeg Decoder"
,
"Name[es]"
:
"Decodificador FFMpeg de K3b"
,
"Name[et]"
:
"K3b FFMpeg dekodeerija"
,
"Name[eu]"
:
"K3b FFMpeg deskodetzailea"
,
"Name[fi]"
:
"K3b:n FFMpeg-purkaja"
,
"Name[fr]"
:
"Décodeur « FFMpeg » pour K3b"
,
"Name[ga]"
:
"Díchódóir FFMpeg K3b"
,
"Name[gl]"
:
"Descodificador FFMpeg para o K3b"
,
"Name[he]"
:
"מפענח FFMpeg של K3b"
,
"Name[hne]"
:
"के3बी एफएफएमपीईजी डिकोडर"
,
"Name[hr]"
:
"K3b-ov FFMpeg dekoder"
,
"Name[hu]"
:
"FFMpeg-dekódoló a K3b-hez"
,
"Name[ia]"
:
"Decifrator FFMpeg de K3b"
,
"Name[id]"
:
"Dekoder FFMpeg K3b"
,
"Name[is]"
:
"K3b FFMpeg afkóðari"
,
"Name[it]"
:
"Decodificatore FFMpeg di K3b"
,
"Name[ja]"
:
"K3b FFMpeg デコーダ"
,
"Name[kk]"
:
"K3b FFMpeg декодері"
,
"Name[km]"
:
"ឌិកូឌ័រ FFMpeg របស់ K3b"
,
"Name[ko]"
:
"K3b FFMpeg 디코더"
,
"Name[lt]"
:
"K3b FFMpeg dekoderis"
,
"Name[lv]"
:
"K3b FFMpeg dekoderis"
,
"Name[mr]"
:
"के3बी FFMpeg डीकोडर"
,
"Name[nb]"
:
"K3b FFMpeg dekoder"
,
"Name[nds]"
:
"FFMpeg-Dekoderer för K3b"
,
"Name[nl]"
:
"K3b FFMpeg-decoder"
,
"Name[nn]"
:
"FFMpeg-dekodar for K3b"
,
"Name[pa]"
:
"K3b FFMpeg ਡੀਕੋਡਰ"
,
"Name[pl]"
:
"Dekoder FFMpeg dla K3b"
,
"Name[pt]"
:
"Descodificador de FFMpeg do K3b"
,
"Name[pt_BR]"
:
"Decodificador FFMpeg do K3b"
,
"Name[ro]"
:
"Decodor K3b FFMpeg"
,
"Name[ru]"
:
"Декодер FFMpeg"
,