Recherche avancée

Médias (1)

Mot : - Tags -/publicité

Autres articles (58)

  • Multilang : améliorer l’interface pour les blocs multilingues

    18 février 2011, par

    Multilang est un plugin supplémentaire qui n’est pas activé par défaut lors de l’initialisation de MediaSPIP.
    Après son activation, une préconfiguration est mise en place automatiquement par MediaSPIP init permettant à la nouvelle fonctionnalité d’être automatiquement opérationnelle. Il n’est donc pas obligatoire de passer par une étape de configuration pour cela.

  • Ajouter des informations spécifiques aux utilisateurs et autres modifications de comportement liées aux auteurs

    12 avril 2011, par

    La manière la plus simple d’ajouter des informations aux auteurs est d’installer le plugin Inscription3. Il permet également de modifier certains comportements liés aux utilisateurs (référez-vous à sa documentation pour plus d’informations).
    Il est également possible d’ajouter des champs aux auteurs en installant les plugins champs extras 2 et Interface pour champs extras.

  • List of compatible distributions

    26 avril 2011, par

    The table below is the list of Linux distributions compatible with the automated installation script of MediaSPIP. Distribution nameVersion nameVersion number Debian Squeeze 6.x.x Debian Weezy 7.x.x Debian Jessie 8.x.x Ubuntu The Precise Pangolin 12.04 LTS Ubuntu The Trusty Tahr 14.04
    If you want to help us improve this list, you can provide us access to a machine whose distribution is not mentioned above or send the necessary fixes to add (...)

Sur d’autres sites (9160)

  • When I build ndk with .a files it comes like this `error adding symbols : File in wrong format`

    2 avril 2020, par Pradeep Simba

    When I build ndk with .a files it comes like this error adding symbols: File in wrong format.

    



    WORKING_DIR := $(call my-dir)

include $(CLEAR_VARS)
LOCAL_PATH := $(WORKING_DIR)/../third_party/lame/libmp3lame
LOCAL_MODULE    := lame
LOCAL_C_INCLUDES := $(WORKING_DIR)/../third_party/lame/libmp3lame \
                $(WORKING_DIR)/../third_party/lame/include
LOCAL_CFLAGS := -DSTDC_HEADERS -std=c99
LOCAL_ARM_MODE := arm
APP_OPTIM := release

LOCAL_SRC_FILES := VbrTag.c \
               bitstream.c \
               encoder.c \
               fft.c \
               gain_analysis.c \
               id3tag.c \
               lame.c \
               mpglib_interface.c \
               newmdct.c \
               presets.c \
               psymodel.c \
               quantize.c \
               quantize_pvt.c \
               reservoir.c \
               set_get.c \
               tables.c \
               takehiro.c \
               util.c \
               vbrquantize.c \
               version.c


#include $(BUILD_STATIC_LIBRARY)

include $(BUILD_STATIC_LIBRARY)

#include $(CLEAR_VARS)
#LOCAL_MODULE  := mp3lame_a
#LOCAL_STATIC_LIBRARIES := lame

#include $(BUILD_EXECUTABLE) 

include $(CLEAR_VARS)
LOCAL_PATH := $(WORKING_DIR)
LOCAL_MODULE    := ffmpeg
LOCAL_CFLAGS := -DHAVE_AV_CONFIG_H -std=c99 -D__STDC_CONSTANT_MACROS -DSTDC_HEADERS -Wno-deprecated-declarations
LOCAL_SRC_FILES := ffmpeg-jni.c
LOCAL_C_INCLUDES := $(WORKING_DIR)/libavcodec $(WORKING_DIR)/libavcodec/arm      $(WORKING_DIR)/libavformat $(WORKING_DIR)/libavutil $(WORKING_DIR)/libavutil/arm

LOCAL_STATIC_LIBRARIES := lame

LOCAL_LDLIBS := -llog -lm -lz $(WORKING_DIR)/../third_party/lib/libavformat.a $(WORKING_DIR)/../third_party/lib/libavcodec.a $(WORKING_DIR)/../third_party/lib/libavfilter.a $(WORKING_DIR)/../third_party/lib/libavresample.a $(WORKING_DIR)/../third_party/lib/libswscale.a $(WORKING_DIR)/../third_party/lib/libavutil.a $(WORKING_DIR)/../third_party/lib/libx264.a $(WORKING_DIR)/../third_party/lib/libpostproc.a $(WORKING_DIR)/../third_party/lib/libswresample.a $(WORKING_DIR)/../third_party/lib/libfdk-aac.a

APP_OPTIM := release

include $(BUILD_SHARED_LIBRARY)


    



    enter image description here
enter image description here
enter image description here

    



    When I build ndk the error occurs

    



    enter image description here

    



    Microsoft Windows [Version 10.0.18363.418]
(c) 2019 Microsoft Corporation. All rights reserved.

C:\Users\prade>d:

D:\>cd D:\Github\n

D:\Github\n>ndk-build
Android NDK: APP_PLATFORM not set. Defaulting to minimum supported version android-16.
Android NDK: WARNING:jni/Android.mk:ffmpeg: non-system libraries in linker flags: jni/../third_party/lib/libavformat.a jni/../third_party/lib/libavcodec.a jni/../third_party/lib/libavfilter.a jni/../third_party/lib/libavresample.a jni/../third_party/lib/libswscale.a jni/../third_party/lib/libavutil.a jni/../third_party/lib/libx264.a jni/../third_party/lib/libpostproc.a jni/../third_party/lib/libswresample.a jni/../third_party/lib/libfdk-aac.a
Android NDK:     This is likely to result in incorrect builds. Try using LOCAL_STATIC_LIBRARIES
Android NDK:     or LOCAL_SHARED_LIBRARIES instead to list the library dependencies of the
Android NDK:     current module
Android NDK: WARNING:jni/Android.mk:ffmpeg: non-system libraries in linker flags: jni/../third_party/lib/libavformat.a jni/../third_party/lib/libavcodec.a jni/../third_party/lib/libavfilter.a jni/../third_party/lib/libavresample.a jni/../third_party/lib/libswscale.a jni/../third_party/lib/libavutil.a jni/../third_party/lib/libx264.a jni/../third_party/lib/libpostproc.a jni/../third_party/lib/libswresample.a jni/../third_party/lib/libfdk-aac.a
Android NDK:     This is likely to result in incorrect builds. Try using LOCAL_STATIC_LIBRARIES
Android NDK:     or LOCAL_SHARED_LIBRARIES instead to list the library dependencies of the
Android NDK:     current module
Android NDK: WARNING:jni/Android.mk:ffmpeg: non-system libraries in linker flags: jni/../third_party/lib/libavformat.a jni/../third_party/lib/libavcodec.a jni/../third_party/lib/libavfilter.a jni/../third_party/lib/libavresample.a jni/../third_party/lib/libswscale.a jni/../third_party/lib/libavutil.a jni/../third_party/lib/libx264.a jni/../third_party/lib/libpostproc.a jni/../third_party/lib/libswresample.a jni/../third_party/lib/libfdk-aac.a
Android NDK:     This is likely to result in incorrect builds. Try using LOCAL_STATIC_LIBRARIES
Android NDK:     or LOCAL_SHARED_LIBRARIES instead to list the library dependencies of the
Android NDK:     current module
Android NDK: WARNING:jni/Android.mk:ffmpeg: non-system libraries in linker flags: jni/../third_party/lib/libavformat.a jni/../third_party/lib/libavcodec.a jni/../third_party/lib/libavfilter.a jni/../third_party/lib/libavresample.a jni/../third_party/lib/libswscale.a jni/../third_party/lib/libavutil.a jni/../third_party/lib/libx264.a jni/../third_party/lib/libpostproc.a jni/../third_party/lib/libswresample.a jni/../third_party/lib/libfdk-aac.a
Android NDK:     This is likely to result in incorrect builds. Try using LOCAL_STATIC_LIBRARIES
Android NDK:     or LOCAL_SHARED_LIBRARIES instead to list the library dependencies of the
Android NDK:     current module
[arm64-v8a] Compile        : ffmpeg <= ffmpeg-jni.c
jni/ffmpeg-jni.c:248:16: warning: initializing 'const jbyte *' (aka 'const signed char *') with an expression of type
  'const char *' converts between pointers to integer types with different sign [-Wpointer-sign]
const jbyte *url = (*env)->GetStringUTFChars(env, rtmp_url, NULL);
           ^     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
jni/ffmpeg-jni.c:252:37: warning: passing 'const jbyte *' (aka 'const signed char *') to parameter of type
  'const char *' converts between pointers to integer types with different sign [-Wpointer-sign]
if (avio_open(&fmt_context->pb, url, URL_WRONLY) < 0) {
                                ^~~
jni/libavformat/avio.h:391:44: note: passing argument to parameter 'url' here
 int avio_open(AVIOContext **s, const char *url, int flags);
                                       ^
jni/ffmpeg-jni.c:257:48: warning: passing 'const jbyte *' (aka 'const signed char *') to parameter of type
  'const char *' converts between pointers to integer types with different sign [-Wpointer-sign]
(*env)->ReleaseStringUTFChars(env, rtmp_url, url);
                                           ^~~
jni/ffmpeg-jni.c:297:18: warning: initializing 'unsigned char *' with an expression of type 'jbyte *'
  (aka 'signed char *') converts between pointers to integer types with different sign [-Wpointer-sign]
 unsigned char *yuv_data = (*env)->GetByteArrayElements(env, yuv_image, 0);
             ^          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 jni/ffmpeg-jni.c:330:52: warning: passing 'unsigned char *' to parameter of type 'jbyte *' (aka 'signed char *')
  converts between pointers to integer types with different sign [-Wpointer-sign]
 (*env)->ReleaseByteArrayElements(env, yuv_image, yuv_data, 0);
                                               ^~~~~~~~
5 warnings generated.
[arm64-v8a] Compile        : lame <= VbrTag.c
jni/../third_party/lame/libmp3lame/VbrTag.c:263:5: warning: shifting a negative signed value is undefined
  [-Wshift-negative-value]
SHIFT_IN_BITS_VALUE(buffer[0], 8u, 0xffu);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
jni/../third_party/lame/libmp3lame/VbrTag.c:255:68: note: expanded from macro 'SHIFT_IN_BITS_VALUE'
#define SHIFT_IN_BITS_VALUE(x,n,v) ( x = (x << (n)) | ( (v) & ~(-1 << (n)) ) )
                                                            ~~ ^
jni/../third_party/lame/libmp3lame/VbrTag.c:265:5: warning: shifting a negative signed value is undefined
  [-Wshift-negative-value]
SHIFT_IN_BITS_VALUE(buffer[1], 3u, 7);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
jni/../third_party/lame/libmp3lame/VbrTag.c:255:68: note: expanded from macro 'SHIFT_IN_BITS_VALUE'
#define SHIFT_IN_BITS_VALUE(x,n,v) ( x = (x << (n)) | ( (v) & ~(-1 << (n)) ) )
                                                            ~~ ^
jni/../third_party/lame/libmp3lame/VbrTag.c:266:5: warning: shifting a negative signed value is undefined
  [-Wshift-negative-value]
SHIFT_IN_BITS_VALUE(buffer[1], 1u, (gfp->out_samplerate < 16000) ? 0 : 1);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
jni/../third_party/lame/libmp3lame/VbrTag.c:255:68: note: expanded from macro 'SHIFT_IN_BITS_VALUE'
#define SHIFT_IN_BITS_VALUE(x,n,v) ( x = (x << (n)) | ( (v) & ~(-1 << (n)) ) )
                                                            ~~ ^
jni/../third_party/lame/libmp3lame/VbrTag.c:267:5: warning: shifting a negative signed value is undefined
  [-Wshift-negative-value]
SHIFT_IN_BITS_VALUE(buffer[1], 1u, gfp->version);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
jni/../third_party/lame/libmp3lame/VbrTag.c:255:68: note: expanded from macro 'SHIFT_IN_BITS_VALUE'
#define SHIFT_IN_BITS_VALUE(x,n,v) ( x = (x << (n)) | ( (v) & ~(-1 << (n)) ) )
                                                            ~~ ^
jni/../third_party/lame/libmp3lame/VbrTag.c:268:5: warning: shifting a negative signed value is undefined
  [-Wshift-negative-value]
SHIFT_IN_BITS_VALUE(buffer[1], 2u, 4 - 3);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
jni/../third_party/lame/libmp3lame/VbrTag.c:255:68: note: expanded from macro 'SHIFT_IN_BITS_VALUE'
#define SHIFT_IN_BITS_VALUE(x,n,v) ( x = (x << (n)) | ( (v) & ~(-1 << (n)) ) )
                                                            ~~ ^
jni/../third_party/lame/libmp3lame/VbrTag.c:269:5: warning: shifting a negative signed value is undefined
  [-Wshift-negative-value]
SHIFT_IN_BITS_VALUE(buffer[1], 1u, (!gfp->error_protection) ? 1 : 0);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
jni/../third_party/lame/libmp3lame/VbrTag.c:255:68: note: expanded from macro 'SHIFT_IN_BITS_VALUE'
#define SHIFT_IN_BITS_VALUE(x,n,v) ( x = (x << (n)) | ( (v) & ~(-1 << (n)) ) )
                                                            ~~ ^
jni/../third_party/lame/libmp3lame/VbrTag.c:271:5: warning: shifting a negative signed value is undefined
  [-Wshift-negative-value]
SHIFT_IN_BITS_VALUE(buffer[2], 4u, gfc->bitrate_index);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
jni/../third_party/lame/libmp3lame/VbrTag.c:255:68: note: expanded from macro 'SHIFT_IN_BITS_VALUE'
#define SHIFT_IN_BITS_VALUE(x,n,v) ( x = (x << (n)) | ( (v) & ~(-1 << (n)) ) )
                                                            ~~ ^
jni/../third_party/lame/libmp3lame/VbrTag.c:272:5: warning: shifting a negative signed value is undefined
  [-Wshift-negative-value]
SHIFT_IN_BITS_VALUE(buffer[2], 2u, gfc->samplerate_index);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
jni/../third_party/lame/libmp3lame/VbrTag.c:255:68: note: expanded from macro 'SHIFT_IN_BITS_VALUE'
#define SHIFT_IN_BITS_VALUE(x,n,v) ( x = (x << (n)) | ( (v) & ~(-1 << (n)) ) )
                                                            ~~ ^
jni/../third_party/lame/libmp3lame/VbrTag.c:273:5: warning: shifting a negative signed value is undefined
  [-Wshift-negative-value]
SHIFT_IN_BITS_VALUE(buffer[2], 1u, 0);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
jni/../third_party/lame/libmp3lame/VbrTag.c:255:68: note: expanded from macro 'SHIFT_IN_BITS_VALUE'
#define SHIFT_IN_BITS_VALUE(x,n,v) ( x = (x << (n)) | ( (v) & ~(-1 << (n)) ) )
                                                            ~~ ^
jni/../third_party/lame/libmp3lame/VbrTag.c:274:5: warning: shifting a negative signed value is undefined
  [-Wshift-negative-value]
SHIFT_IN_BITS_VALUE(buffer[2], 1u, gfp->extension);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
jni/../third_party/lame/libmp3lame/VbrTag.c:255:68: note: expanded from macro 'SHIFT_IN_BITS_VALUE'
#define SHIFT_IN_BITS_VALUE(x,n,v) ( x = (x << (n)) | ( (v) & ~(-1 << (n)) ) )
                                                            ~~ ^
jni/../third_party/lame/libmp3lame/VbrTag.c:276:5: warning: shifting a negative signed value is undefined
  [-Wshift-negative-value]
SHIFT_IN_BITS_VALUE(buffer[3], 2u, gfp->mode);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
jni/../third_party/lame/libmp3lame/VbrTag.c:255:68: note: expanded from macro 'SHIFT_IN_BITS_VALUE'
#define SHIFT_IN_BITS_VALUE(x,n,v) ( x = (x << (n)) | ( (v) & ~(-1 << (n)) ) )
                                                            ~~ ^
jni/../third_party/lame/libmp3lame/VbrTag.c:277:5: warning: shifting a negative signed value is undefined
  [-Wshift-negative-value]
SHIFT_IN_BITS_VALUE(buffer[3], 2u, gfc->mode_ext);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
jni/../third_party/lame/libmp3lame/VbrTag.c:255:68: note: expanded from macro 'SHIFT_IN_BITS_VALUE'
#define SHIFT_IN_BITS_VALUE(x,n,v) ( x = (x << (n)) | ( (v) & ~(-1 << (n)) ) )
                                                            ~~ ^
jni/../third_party/lame/libmp3lame/VbrTag.c:278:5: warning: shifting a negative signed value is undefined
  [-Wshift-negative-value]
SHIFT_IN_BITS_VALUE(buffer[3], 1u, gfp->copyright);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
jni/../third_party/lame/libmp3lame/VbrTag.c:255:68: note: expanded from macro 'SHIFT_IN_BITS_VALUE'
#define SHIFT_IN_BITS_VALUE(x,n,v) ( x = (x << (n)) | ( (v) & ~(-1 << (n)) ) )
                                                            ~~ ^
jni/../third_party/lame/libmp3lame/VbrTag.c:279:5: warning: shifting a negative signed value is undefined
  [-Wshift-negative-value]
SHIFT_IN_BITS_VALUE(buffer[3], 1u, gfp->original);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
jni/../third_party/lame/libmp3lame/VbrTag.c:255:68: note: expanded from macro 'SHIFT_IN_BITS_VALUE'
#define SHIFT_IN_BITS_VALUE(x,n,v) ( x = (x << (n)) | ( (v) & ~(-1 << (n)) ) )
                                                            ~~ ^
jni/../third_party/lame/libmp3lame/VbrTag.c:280:5: warning: shifting a negative signed value is undefined
  [-Wshift-negative-value]
SHIFT_IN_BITS_VALUE(buffer[3], 2u, gfp->emphasis);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
jni/../third_party/lame/libmp3lame/VbrTag.c:255:68: note: expanded from macro 'SHIFT_IN_BITS_VALUE'
#define SHIFT_IN_BITS_VALUE(x,n,v) ( x = (x << (n)) | ( (v) & ~(-1 << (n)) ) )
                                                            ~~ ^
jni/../third_party/lame/libmp3lame/VbrTag.c:421:23: warning: comparison of array 'pTagData->toc' not equal to a null
  pointer is always true [-Wtautological-pointer-compare]
    if (pTagData->toc != NULL) {
        ~~~~~~~~~~^~~    ~~~~
16 warnings generated.
[arm64-v8a] Compile        : lame <= bitstream.c
[arm64-v8a] Compile        : lame <= encoder.c
[arm64-v8a] Compile        : lame <= fft.c
[arm64-v8a] Compile        : lame <= gain_analysis.c
[arm64-v8a] Compile        : lame <= id3tag.c
[arm64-v8a] Compile        : lame <= lame.c
jni/../third_party/lame/libmp3lame/lame.c:603:13: warning: using floating point absolute value function 'fabs' when
  argument is of integer type [-Wabsolute-value]
    if (EQ(gfp->compression_ratio, 0))
        ^
jni/../third_party/lame/libmp3lame/machine.h:168:12: note: expanded from macro 'EQ'
(fabs(a) > fabs(b)) \
       ^
jni/../third_party/lame/libmp3lame/lame.c:603:13: note: use function 'abs' instead
jni/../third_party/lame/libmp3lame/machine.h:168:12: note: expanded from macro 'EQ'
(fabs(a) > fabs(b)) \
       ^
jni/../third_party/lame/libmp3lame/lame.c:603:13: warning: using floating point absolute value function 'fabs' when
  argument is of integer type [-Wabsolute-value]
    if (EQ(gfp->compression_ratio, 0))
        ^
jni/../third_party/lame/libmp3lame/machine.h:170:23: note: expanded from macro 'EQ'
: (fabs((a)-(b)) <= (fabs(b) * 1e-6f)))
                  ^
jni/../third_party/lame/libmp3lame/lame.c:603:13: note: use function 'abs' instead
jni/../third_party/lame/libmp3lame/machine.h:170:23: note: expanded from macro 'EQ'
: (fabs((a)-(b)) <= (fabs(b) * 1e-6f)))
                  ^
jni/../third_party/lame/libmp3lame/lame.c:1559:9: warning: using floating point absolute value function 'fabs' when
  argument is of integer type [-Wabsolute-value]
if (NEQ(gfp->scale, 0) && NEQ(gfp->scale, 1.0)) {
    ^
jni/../third_party/lame/libmp3lame/machine.h:175:20: note: expanded from macro 'NEQ'
#define NEQ(a,b) (!EQ(a,b))
               ^
jni/../third_party/lame/libmp3lame/machine.h:168:12: note: expanded from macro 'EQ'
(fabs(a) > fabs(b)) \
       ^
jni/../third_party/lame/libmp3lame/lame.c:1559:9: note: use function 'abs' instead
jni/../third_party/lame/libmp3lame/machine.h:175:20: note: expanded from macro 'NEQ'
#define NEQ(a,b) (!EQ(a,b))
               ^
jni/../third_party/lame/libmp3lame/machine.h:168:12: note: expanded from macro 'EQ'
(fabs(a) > fabs(b)) \
       ^
jni/../third_party/lame/libmp3lame/lame.c:1559:9: warning: using floating point absolute value function 'fabs' when
  argument is of integer type [-Wabsolute-value]
if (NEQ(gfp->scale, 0) && NEQ(gfp->scale, 1.0)) {
    ^
jni/../third_party/lame/libmp3lame/machine.h:175:20: note: expanded from macro 'NEQ'
#define NEQ(a,b) (!EQ(a,b))
               ^
 jni/../third_party/lame/libmp3lame/machine.h:170:23: note: expanded from macro 'EQ'
 : (fabs((a)-(b)) <= (fabs(b) * 1e-6f)))
                  ^
 jni/../third_party/lame/libmp3lame/lame.c:1559:9: note: use function 'abs' instead
 jni/../third_party/lame/libmp3lame/machine.h:175:20: note: expanded from macro 'NEQ'
 #define NEQ(a,b) (!EQ(a,b))
               ^
 jni/../third_party/lame/libmp3lame/machine.h:170:23: note: expanded from macro 'EQ'
 : (fabs((a)-(b)) <= (fabs(b) * 1e-6f)))
                  ^
  jni/../third_party/lame/libmp3lame/lame.c:1568:9: warning: using floating point absolute value function 'fabs' when
   argument is of integer type [-Wabsolute-value]
 if (NEQ(gfp->scale_left, 0) && NEQ(gfp->scale_left, 1.0)) {
    ^
 jni/../third_party/lame/libmp3lame/machine.h:175:20: note: expanded from macro 'NEQ'
 #define NEQ(a,b) (!EQ(a,b))
               ^
 jni/../third_party/lame/libmp3lame/machine.h:168:12: note: expanded from macro 'EQ'
 (fabs(a) > fabs(b)) \
       ^
 jni/../third_party/lame/libmp3lame/lame.c:1568:9: note: use function 'abs' instead
 jni/../third_party/lame/libmp3lame/machine.h:175:20: note: expanded from macro 'NEQ'
 #define NEQ(a,b) (!EQ(a,b))
               ^
 jni/../third_party/lame/libmp3lame/machine.h:168:12: note: expanded from macro 'EQ'
 (fabs(a) > fabs(b)) \
       ^
 jni/../third_party/lame/libmp3lame/lame.c:1568:9: warning: using floating point absolute value function 'fabs' when
  argument is of integer type [-Wabsolute-value]
 if (NEQ(gfp->scale_left, 0) && NEQ(gfp->scale_left, 1.0)) {
    ^
 jni/../third_party/lame/libmp3lame/machine.h:175:20: note: expanded from macro 'NEQ'
 #define NEQ(a,b) (!EQ(a,b))
               ^
 jni/../third_party/lame/libmp3lame/machine.h:170:23: note: expanded from macro 'EQ'
 : (fabs((a)-(b)) <= (fabs(b) * 1e-6f)))
                  ^
 jni/../third_party/lame/libmp3lame/lame.c:1568:9: note: use function 'abs' instead
 jni/../third_party/lame/libmp3lame/machine.h:175:20: note: expanded from macro 'NEQ'
 #define NEQ(a,b) (!EQ(a,b))
               ^
 jni/../third_party/lame/libmp3lame/machine.h:170:23: note: expanded from macro 'EQ'
 : (fabs((a)-(b)) <= (fabs(b) * 1e-6f)))
                  ^
 jni/../third_party/lame/libmp3lame/lame.c:1575:9: warning: using floating point absolute value function 'fabs' when
  argument is of integer type [-Wabsolute-value]
 if (NEQ(gfp->scale_right, 0) && NEQ(gfp->scale_right, 1.0)) {
    ^
 jni/../third_party/lame/libmp3lame/machine.h:175:20: note: expanded from macro 'NEQ'
 #define NEQ(a,b) (!EQ(a,b))
               ^
 jni/../third_party/lame/libmp3lame/machine.h:168:12: note: expanded from macro 'EQ'
 (fabs(a) > fabs(b)) \
       ^
 jni/../third_party/lame/libmp3lame/lame.c:1575:9: note: use function 'abs' instead
 jni/../third_party/lame/libmp3lame/machine.h:175:20: note: expanded from macro 'NEQ'
 #define NEQ(a,b) (!EQ(a,b))
               ^
 jni/../third_party/lame/libmp3lame/machine.h:168:12: note: expanded from macro 'EQ'
 (fabs(a) > fabs(b)) \
       ^
 jni/../third_party/lame/libmp3lame/lame.c:1575:9: warning: using floating point absolute value function 'fabs' when
  argument is of integer type [-Wabsolute-value]
 if (NEQ(gfp->scale_right, 0) && NEQ(gfp->scale_right, 1.0)) {
    ^
 jni/../third_party/lame/libmp3lame/machine.h:175:20: note: expanded from macro 'NEQ'
 #define NEQ(a,b) (!EQ(a,b))
               ^
 jni/../third_party/lame/libmp3lame/machine.h:170:23: note: expanded from macro 'EQ'
 : (fabs((a)-(b)) <= (fabs(b) * 1e-6f)))
                  ^
 jni/../third_party/lame/libmp3lame/lame.c:1575:9: note: use function 'abs' instead
 jni/../third_party/lame/libmp3lame/machine.h:175:20: note: expanded from macro 'NEQ'
 #define NEQ(a,b) (!EQ(a,b))
               ^
 jni/ ../third_party/lame/libmp3lame/machine.h:170:23: note: expanded from macro 'EQ'
 : (fabs((a)-(b)) <= (fabs(b) * 1e-6f)))
                  ^
 8 warnings generated.
 [arm64-v8a] Compile        : lame <= mpglib_interface.c
 [arm64-v8a] Compile        : lame <= newmdct.c
 [arm64-v8a] Compile        : lame <= presets.c
 jni/../third_party/lame/libmp3lame/presets.c:145:5: warning: using floating point absolute value function 'fabs' when
  argument is of integer type [-Wabsolute-value]
 SET_OPTION(quant_comp, set->quant_comp, -1);
 ^
 jni/../third_party/lame/libmp3lame/presets.c:36:16: note: expanded from macro 'SET_OPTION'
 else if (!(fabs(lame_get_##opt(gfp) - def) > 0)) \
           ^
 jni/../third_party/lame/libmp3lame/presets.c:145:5: note: use function 'abs' instead
 jni/../third_party/lame/libmp3lame/presets.c:36:16: note: expanded from macro 'SET_OPTION'
 else if (!(fabs(lame_get_##opt(gfp) - def) > 0)) \
           ^
 jni/../third_party/lame/libmp3lame/presets.c:146:5: warning: using floating point absolute value function 'fabs' when
  argument is of integer type [-Wabsolute-value]
 SET_OPTION(quant_comp_short, set->quant_comp_s, -1);
 ^
 jni/../third_party/lame/libmp3lame/presets.c:36:16: note: expanded from macro 'SET_OPTION'
 else if (!(fabs(lame_get_##opt(gfp) - def) > 0)) \
           ^
 jni/../third_party/lame/libmp3lame/presets.c:146:5: note: use function 'abs' instead
 jni/../third_party/lame/libmp3lame/presets.c:36:16: note: expanded from macro 'SET_OPTION'
 else if (!(fabs(lame_get_##opt(gfp) - def) > 0)) \
           ^
 jni/../third_party/lame/libmp3lame/presets.c:259:5: warning: using floating point absolute value function 'fabs' when
  argument is of integer type [-Wabsolute-value]
 SET_OPTION(quant_comp, abr_switch_map[r].quant_comp, -1);
 ^
 jni/../third_party/lame/libmp3lame/presets.c:36:16: note: expanded from macro 'SET_OPTION'
 else if (!(fabs(lame_get_##opt(gfp) - def) > 0)) \
           ^
 jni/../third_party/lame/libmp3lame/presets.c:259:5: note: use function 'abs' instead
 jni/../third_party/lame/libmp3lame/presets.c:36:16: note: expanded from macro 'SET_OPTION'
 else if (!(fabs(lame_get_##opt(gfp) - def) > 0)) \
           ^
 jni/../third_party/lame/libmp3lame/presets.c:260:5: warning: using floating point absolute value function 'fabs' when
  argument is of integer type [-Wabsolute-value]
 SET_OPTION(quant_comp_short, abr_switch_map[r].quant_comp_s, -1);
 ^
 jni/../third_party/lame/libmp3lame/presets.c:36:16: note: expanded from macro 'SET_OPTION'
 else if (!(fabs(lame_get_##opt(gfp) - def) > 0)) \
           ^
 jni/../third_party/lame/libmp3lame/presets.c:260:5: note: use function 'abs' instead
 jni/../third_party/lame/libmp3lame/presets.c:36:16: note: expanded from macro 'SET_OPTION'
 else if (!(fabs(lame_get_##opt(gfp) - def) > 0)) \
           ^
 4 warnings generated.
 [arm64-v8a] Compile        : lame <= psymodel.c
 [arm64-v8a] Compile        : lame <= quantize.c
 [arm64-v8a] Compile        : lame <= quantize_pvt.c
 jni/../third_party/lame/libmp3lame/quantize_pvt.c:664:23: warning: using floating point absolute value function 'fabs'
  when argument is of integer type [-Wabsolute-value]
    while (k-- && EQ(xr[k], 0)) {
                  ^
 jni/../third_party/lame/libmp3lame/machine.h:168:12: note: expanded from macro 'EQ'
 (fabs(a) > fabs(b)) \
       ^
 jni/../third_party/lame/libmp3lame/quantize_pvt.c:664:23: note: use function 'abs' instead
 jni/../third_party/lame/libmp3lame/machine.h:168:12: note: expanded from macro 'EQ'
 (fabs(a) > fabs(b)) \
       ^
 jni/../third_party/lame/libmp3lame/quantize_pvt.c:664:23: warning: using floating point absolute value function 'fabs'
  when argument is of integer type [-Wabsolute-value]
    while (k-- && EQ(xr[k], 0)) {
                  ^
 jni/../third_party/lame/libmp3lame/machine.h:170:23: note: expanded from macro 'EQ'
 :  (fabs((a)-(b)) <= (fabs(b) * 1e-6f)))
                  ^
 jni/../third_party/lame/libmp3lame/quantize_pvt.c:664:23: note: use function 'abs' instead
 jni/../third_party/lame/libmp3lame/machine.h:170:23: note: expanded from macro 'EQ'
 : (fabs((a)-(b)) <= (fabs(b) * 1e-6f)))
                  ^
 2 warnings generated.
 [arm64-v8a] Compile        : lame <= reservoir.c
 [arm64-v8a] Compile        : lame <= set_get.c
 [arm64-v8a] Compile        : lame <= tables.c
 [arm64-v8a] Compile        : lame <= takehiro.c
 [arm64-v8a] Compile        : lame <= util.c
 [arm64-v8a] Compile        : lame <= vbrquantize.c
 [arm64-v8a] Compile        : lame <= version.c
 [ arm64-v8a] StaticLibrary  : liblame.a
 [ arm64-v8a] SharedLibrary  : libffmpeg.so
 jni/../third_party/lib/libavformat.a: error adding symbols: File in wrong format
 clang++: error: linker command failed with exit code 1 (use -v to see invocation)
 make: *** [D:/install/sdk/ndk/21.0.6113669/build//../build/core/build-binary.mk:725: obj/local/arm64-v8a/libffmpeg.so] Error 1

  D:\Github\n>


    



    How can I solve this ?

    


  • Matomo vs WP-Statistics – which web analytics plugin suits you best ?

    2 avril 2020, par Joselyn Khor — Analytics Tips, Plugins

    Due to the endless choices, you may be wondering which web analytics plugin (GA, Slimstat or WP-Statistics) to choose from on the WordPress directory. If the choice is between WP-Statistics and Matomo for WordPress, we’ve got you covered. Have a look at which could be the best option for you. Our team tested the WP-Statistics plugin to see how it compares. It’s hard not to be biased, but we’ll try our best to give you a fair assessment.

    The main considerations in this article : 

    General overview

    What’s Matomo Analytics for WordPress ?

    Matomo for WordPress is a free, privacy-friendly web analytics plugin that lets you understand website visitors and how they behave on your site. With comprehensive insights, you get the opportunity to increase conversions, and the know-how to improve your website. 

    It lets you undertake essential analysis by tracking information, such as, where visitors are coming from, what your most popular pages are, and how visitors are using your site.

    In addition to the fundamentals, the tool also allows for advanced tracking and analysis with features that give you a full understanding of behavioural patterns and website performance. This enables you to optimise your WordPress website to increase sales or engagement.

    It offers a complete analytics package with the bonuses of 100% data ownership, no data sampling, and GDPR compliance. 

    What’s WP-Statistics ?

    WP-Statistics is currently the most used self-hosted WordPress statistics plugin. It provides reports that let you analyse who your visitors are, where they’re coming from, and to an extent what they’re doing on your website.

    Like Matomo for WordPress, it gives you an understanding of your audience which helps you make decisions on how to improve your website for more conversions. 

    As it’s self-hosted on your own WordPress servers it can be seen as a privacy-friendly choice with a few tweaks (more on this below).

    Like Matomo for WordPress, it gives you an understanding of your audience which helps you make decisions on how to improve your website for more conversions. 

    General comparison

    Let’s compare the installation process and the dashboards that get installed in your WordPress.

    Installation

    Both Matomo and WP-Statistics are installed directly in your WordPress so you’ll be able to see your analytics reports right in your WordPress dashboard. You can install them both straight from the WordPress Directory.

    The installation process for both plugins is beginner-friendly. You simply need to find them on the WordPress directory, click on ‘Install Now’, and tracking should start immediately in your WordPress dashboard.

    Dashboard

    For the main Matomo platform you’ll see :

    • Visitors – Overview, Visits Log, Real-time, Real-time Map, Locations, Devices, Software, Times, User IDs, Custom Variables, User Type
    • Behaviour – Pages, Entry Pages, Exit Pages, Page titles, Site Search, Outlinks, Downloads, Events, Contents, Engagement, Transitions, Users Flow, Top Paths, Page Author, Page Location, Page Type, Crawling errors
    • Acquisition – Overview, All Channels, Search Engine & Keywords, Websites, Social Networks, Campaigns, Campaign URL Builder, Crawling overview
    • Ecommerce – Overview, Ecommerce Log, Products, Sales, Multi Attribution
    • Goals – Overview, Multi Attribution, Choose Goals, Manage Goals
    • These may be worded differently from WP-Statistics, but they show you all the information you need to know about your traffic, pages, etc.
    Previous
    Next

    In the dashboard for WP-Statistics you’ll see :

    • Overview, Hits, Online, Referrers, Search Words, Search Engines, Pages, Visitors, Categories, Tags, Authors, Browsers, Top Visitors Today
    • These are the only things you can see in the dashboard. So you can’t click into them for a drop down section to get deeper insights. 
    •  
    WP-Statistics dashboard

    Key similarities between Matomo and WP-Statistics

    • Free to use
    • Self-hosted – All data collected is stored only within your own servers, no third parties have rights over your data, and logs or report data will never be sent to other servers. 
    • Beginner-friendly – Both offer simple reporting for people who are very much beginners and only want basic insights. With Matomo the advantage is also that you can get more details should you ever want/need to.

    Key differences between Matomo and WP-Statistics

    The main differences fall in these categories : features, privacy, documentation/support, security, active development, extensibility, price and ads.

    Features : 

    WP-Statistics – On a fundamental level, WP-Statistics is focused on simplicity and the basics. There are fewer reports than Matomo and they function on a level that suits beginners who are interested in seeing only the numbers of visitors on the website, and how often each page is viewed. 

    Matomo – provides an interface with similar simplicity. However, there is also a more feature-rich and more comprehensive user interface available. In addition to the basics, Matomo offers features like Goals, Ecommerce, in the free version which show a deeper level of insight. WP Statistics does not let you track essentials like Goals or Ecommerce.

    Privacy : 

    WP-Statistics – One of the concerns we wish to raise here is for data privacy. There doesn’t appear to be an opt-out option in WP-Statistics, which could be problematic for some privacy laws such as GDPR. There’s also no documentation on this.

    We were a bit concerned to see that WP-Statistics didn’t have IP anonymization enabled by default. Considering the IP address is personal data, it means you are not compliant with privacy laws such as the GDPR when you use this plugin unless you tweak the settings. They mentioned : “In previous versions, there was an option called Hash IP. When Hash IP was activated, the IP addresses wouldn’t be stored in the database, but instead, a unique hash would be used. In this new version, an option has been added to store IPs anonymously. This option is active by default.” However, when we installed this and tested it on multiple WordPress installations, this option was not active by default. 

    Matomo – has more measures in place to ensure privacy is respected, such as, opt-outs. Due to the stringent privacy features in place, Matomo is well equipped to ensure GDPR compliance. Matomo has an abundance of user guides and FAQs you can follow to configure your platform to fully comply with GDPR. There’s even an 12-step compliant checklist. The most compelling proof is that the leading voice on GDPR – The European Commission uses Matomo Analytics. 

    Documentation/Support : 

    WP-Statistics – has little documentation, FAQs, and no support.

    Matomo – has thousands of FAQs and user guides, as well as a dedicated support team and forum you can turn to for help. Should you ever run into any issue, this might be something important to consider.

    The contrast in support between WP-Statistics and Matomo for WordPress :

    statistics for wordpress
    WP-Statistics support
    wordpress statistics
    Matomo Analytics support

    Security :

    Matomo takes protecting your data very seriously. We have a security bounty programme giving security researchers money should they find any security issues. Matomo also performs a security review for every new release. We couldn’t find anything similar in WP-Statistics.

    Active development : 

    WP Statistics – doesn’t seem to have active development. The last change in this plugin was over three months ago (source : https://github.com/wp-statistics/wp-statistics/commits/master) and in general, only 10 people really contributed to it (source : https://github.com/wp-statistics/wp-statistics/graphs/contributors, the graphs shows little contributor activity.) 

    Matomo – has been built by hundreds of contributors (source : https://github.com/matomo-org/matomo/graphs/contributors), and is actively maintained by multiple developers including developers who work on this full time. This means you can rest assured that Matomo will be there for you in the future, it will receive regular improvements.

    Extensibility :

    WP-Statistics – have a section on their website offering customisation but for a price. 

    Matomo – should you want any changes and have some developer knowledge or some developers at hand, you can completely customise and extend Matomo for free. There are also one hundred additional plugins available for Matomo for free. 

    Price :

    The main WordPress plugins ‘WP Statistics‘ and ‘Matomo Analytics – Ethical Stats. Powerful Insights.‘ are both free.

    WP Statistics and Matomo also sell paid add-ons. However, WP-Statistics’ paid add-ons are ones already integrated in Matomo for free. These basic features are provided as the development team believe they’re necessities to a fully functional analytics platform. 

    Ads :

    WP Statistics shows you ads, whereas Matomo doesn’t.

    Three most notable feature category comparisons

    Both Matomo and WP-Statistics have basic tracking categories in the WP dashboard. In addition, Matomo has feature categories that can be expanded e.g. when clicked, Visitors drops down to reveal 11 more features. 

    We’ll compare three feature categories : Visitors, Behaviour, and Acquisitions.

    1. Visitors (WP-Statistics) vs Visitors (Matomo)

    Let’s dive into how each analytics platform provides insight into the visitors feature category.

    WP-Statistics

    WP-Statistics visitors

    WP-Statistics – We can see WP-Statistics gives you bare bones tracking capabilities so you don’t get a really detailed picture of your visitors. It allows you to monitor users currently online in real-time, which is useful to look at the most recent activity on your site. WP-Statistics doesn’t offer a dropdown section to see more about your visitor’s behavioural patterns. There is no Visitors category in WP-Statistics, just individual features in the dashboard but we can group three options together to compare with Matomo’s Visitors category, these are : Online, Browsers, Top Visitors Today.

    Matomo

    WordPress analytics visitors
    WordPress analytics visit log

    Comparison

    Matomo – In comparison, Matomo has a Visitors category with a dropdown list that lets you drill deeper into what your visitors are doing. It lets you evaluate every action an individual user has taken on your website which is compiled into a full historical profile. Matomo gives an in-depth view. E.g. you can look at individual visit logs, locations, and devices.

    This lets you see what the life-time journey of an active user looks like, or perhaps you want to see what a profile looks like for a user who comes back time-and-time again without ever purchasing ; there is no better way to gain insights to these journeys and this is why the Visitor Profiles feature is so widely used by Matomo users.

    2. Pages tracking (WP-Statistics) vs Behaviour (Matomo)

    For this comparison, WP-Statistics has a few features that can be combined to compare with Matomo’s Behaviour category. 

    WP-Statistics

    WP-Statistics pages

    The Pages section in WP-Statistics gives a basic look at your most popular pages so you know which pages get more visits and those which aren’t performing. This helps with content improvement. You can also see other features in this Behaviour category like Browsers and Hits – these also provide basic stats to help you get a general sense of visitor behaviour. 

    Matomo

    Analytics for WordPress behaviours

    Comparison :

    Matomo on the other hand has stats that go into greater detail. The features under the Behaviour section of the tool let you draw actionable conclusions e.g. seeing that a page has a higher exit rate than it’s supposed to, so you optimise that page to prevent people leaving and help them progress through your website. 

    Not only can you see popular pages, you can look at : which page people viewed first when they visited your website ; which page they left from ; what people search for on your site ; and see how people are flowing through pages. Most importantly you can see how each of these reports perform over time so you can improve engagement and conversions on your website.

    3. Referrers (WP-Statistics) vs Acquisition (Matomo)

    For this comparison, WP-Statistics has a few features that can be combined to compare with Matomo’s Acquisition category. 

    WP-Statistics

    WP-Statistics gives you Referrers, Search Words, and Search Engines. Which give a basic understanding of the channels that work best for you. This is helpful to know where to focus more of your attention.

    Matomo

    WordPress analytics acquisition

    Comparison :

    With Matomo you see multiple layers of stats to understand how your acquisition channels are performing. So you can see tables of data that drill into visits, downloads, bounce rate, and newsletter sign ups. For example seeing that Facebook is the channel bringing in the most visitors to your site. This gives you a better sense of which acquisition strategy is working for your site. 

    Who suits WP-Statistics

    This is a great starter pack for people who want a lightweight, functional statistics plugin that gives you a basic overview of website hits and visitors. It’s very easy to use, so it’s great for beginners and those who want simple tracking. If you have basic goals for your website or blog’s success then WP-Statistics is enough for you to get numbers on visitors, page views, and hits, but won’t be suitable for a larger-scale business or organisation. 

    It’s suited for hobby websites, blogs, and freelancers who want simple, effective stats tracking, who don’t need detailed insights on site performance or tracking. 

    Who suits Matomo

    Matomo can be used for the same basic reporting, but has the capability for you to go deeper into more advanced reporting in a different UI if you need it. It’s an option that can work for a wider range of users – from beginners to analysts. There are features to suit all skill levels. This complete suite of features makes it a more comprehensive tool, as you can get more out of it. Ideal not only for bloggers and beginners, but also powerful enough to suit businesses, privacy-respecting organisations, and those who would benefit from conversion optimisation features. 

    You can draw insights from all stages of the customer journey – you’ll track behavioural patterns as soon as visitors enter your site, to their progression through your site, and ultimately to conversion and exit. It’s also an ethical choice because you get 100% data ownership. 

    If you’d like to look deeper into your data then Matomo would also be suitable for you. Matomo’s UI is lean, very easy to learn and shouldn’t overwhelm users in the way another tool like Google Analytics might do. If you think Matomo suits you best, you can install it for free now.

    Advantages of using Matomo

    Truly privacy-respecting

    There’s no messing about when it comes to privacy. As a lot of users are based in Europe, Matomo adheres to the strictest privacy laws and can be counted on as a privacy-respecting tool that’s used by many government entities. Needing to comply with major privacy laws (GDPR) in Europe means Matomo can proudly ensure users are making the ethical choice.

    GDPR compliance

    You mitigate the risks of getting caught out and fined for breaching GDPR regulations. There’s a complete list of documentation, guides, information, and tools to make sure you’re on the right side of GDPR. 

    All-rounder

    Matomo gives you a clearer picture of your visitors which helps you make better decisions for your website overall. The support and documentation is thorough which means you get more out of your Matomo experience.

    Conclusion

    Both tools will do you justice in terms of fundamental reporting, but Matomo Analytics will outshine if you want a greater understanding of your website and want to carry out deeper levels of analysis.

    You can draw useful insights with WP-Statistics so it has to be said that they are doing something right with an entry-level offering. The simplicity is great, but you won’t really get more than a basic idea of how your site is performing.

    On the flipside, this simplicity could also be a double-edged sword for WP-Statistics in that it’s too simplistic to draw actionable insights. If you’re wanting to know anything that could increase sales, conversions or subscribers – then you wouldn’t really get the reports to do so. 

    WP-Statistics also falls short when it comes to updates and support. So a major difference can be seen in support, active development, ads, security, documentation, which many people may think about until they’re in trouble and find they need these resources. Matomo offers support, continuous product development, and extensive documentation. There are also no ads, making it more enjoyable to use.

    One thing we’d like to raise awareness about is WP-Statistics’ claims of being privacy-respecting without much documentation to back up those claims. There is a lack of privacy features which could put some website owners at risk of non-compliance. Just be sure to check that you’ve carried out the steps to comply with the privacy laws in your country.

    Matomo makes it clear that privacy is essential as is compliance to privacy laws like GDPR. The strength also lies in the peace of mind you get from a tool that’s used by global privacy leaders such as the European Commission. 

  • Summary Video Accessibility Talk

    1er janvier 2014, par silvia

    I’ve just got off a call to the UK Digital TV Group, for which I gave a talk on HTML5 video accessibility (slides best viewed in Google Chrome).

    The slide provide a high-level summary of the accessibility features that we’ve developed in the W3C for HTML5, including :

    • Subtitles & Captions with WebVTT and the track element
    • Video Descriptions with WebVTT, the track element and speech synthesis
    • Chapters with WebVTT for semantic navigation
    • Audio Descriptions through synchronising an audio track with a video
    • Sign Language video synchronized with a main video

    I received some excellent questions.

    The obvious one was about why WebVTT and not TTML. While for anyone who has tried to implement TTML support, the advantages of WebVTT should be clear, for some the decision of the browsers to go with WebVTT still seems to be bothersome. The advantages of CSS over XSL-FO in a browser-context are obvious, but not as much outside browsers. So, the simplicity of WebVTT and the clear integration with HTML have to speak for themselves. Conversion between TTML and WebVTT was a feature that was being asked for.

    I received a question about how to support ducking (reduce the volume of the main audio track) when using video descriptions. My reply was to either use video descriptions with WebVTT and do ducking during the times that a cue is active, or when using audio descriptions (i.e. actual audio tracks) to add an additional WebVTT file of kind=metadata to mark the intervals in which to do ducking. In both cases some JavaScript will be necessary.

    I received another question about how to do clean audio, which I had almost forgotten was a requirement from our earlier media accessibility document. “Clean audio” consists of isolating the audio channel containing the spoken dialog and important non-speech information that can then be amplified or otherwise modified, while other channels containing music or ambient sounds are attenuated. I suggested using the mediagroup attribute to provide a main video element (without an audio track) and then the other channels as parallel audio tracks that can be turned on and off and attenuated individually. There is some JavaScript coding involved on top of the APIs that we have defined in HTML, but it can be implemented in browsers that support the mediagroup attribute.

    Another question was about the possibilities to extend the list of @kind attribute values. I explained that right now we have a proposal for a new text track kind=”forced” so as to provide forced subtitles for sections of video with foreign language. These would be on when no other subtitle or caption tracks are activated. I also explained that if there is a need for application-specific text tracks, the kind=”metadata” would be the correct choice.

    I received some further questions, in particular about how to apply styling to captions (e.g. color changes to text) and about how closely the browser are able to keep synchronization across multiple media elements. The earlier was easily answered with the ::cue pseudo-element, but the latter is a quality of implementation feature, so I had to defer to individual browsers.

    Overall it was a good exercise to summarize the current state of HTML5 video accessibility and I was excited to show off support in Chrome for all the features that we designed into the standard.