From: Donghyun Lee Date: Thu, 22 Oct 2015 02:26:44 +0000 (+0900) Subject: some minor updates X-Git-Tag: tizen_3.0/TD_SYNC/20161201~349 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=6de1bb352f6abff596ae336b1b8207fc4b5c62bc;p=sdk%2Fonline-doc.git some minor updates --- diff --git a/org.tizen.devtools/html/native_tools/command_line_interface_n.htm b/org.tizen.devtools/html/native_tools/command_line_interface_n.htm index 4cd426c..8dc901e 100644 --- a/org.tizen.devtools/html/native_tools/command_line_interface_n.htm +++ b/org.tizen.devtools/html/native_tools/command_line_interface_n.htm @@ -75,7 +75,7 @@ export PATH=$PATH:$<TIZEN_SDK_HOME>/tools/ide/bin tizen cli-config
-tizen cli-config [-g] <key>=<value>
+tizen cli-config [-g <key>=<value>]
 tizen cli-config -l
 
diff --git a/org.tizen.devtools/html/web_tools/command_line_interface_w.htm b/org.tizen.devtools/html/web_tools/command_line_interface_w.htm index c75d4f3..b32a034 100644 --- a/org.tizen.devtools/html/web_tools/command_line_interface_w.htm +++ b/org.tizen.devtools/html/web_tools/command_line_interface_w.htm @@ -77,7 +77,7 @@ export PATH=$PATH:$<TIZEN_SDK_HOME>/tools/ide/bin tizen cli-config
-tizen cli-config [-g <key>=<value>
+tizen cli-config [-g <key>=<value>]
 tizen cli-config -l
 
diff --git a/org.tizen.gettingstarted/html/native/details/app_filtering_n.htm b/org.tizen.gettingstarted/html/native/details/app_filtering_n.htm index e1784db..9a127a4 100644 --- a/org.tizen.gettingstarted/html/native/details/app_filtering_n.htm +++ b/org.tizen.gettingstarted/html/native/details/app_filtering_n.htm @@ -191,6 +191,11 @@ 2.2.1 +http://tizen.org/feature/database.encryption + Specify this key, if the application requires the database encryption feature. + 2.2.1 + + http://tizen.org/feature/fmradio Specify this key, if the application requires an FM radio. 2.2.1 @@ -355,6 +360,11 @@ 2.4 +http://tizen.org/feature/network.telephony.sms.cbs + Specify this key, if the application requires the SMS Cell Broadcast Service (CBS) feature. + 2.2.1 + + http://tizen.org/feature/network.tethering Specify this key, if the application requires any kind of tethering feature. 2.3 @@ -799,6 +809,11 @@ 2.2.1 +http://tizen.org/feature/database.encryption + Specify this key, if the application requires the database encryption feature. + 2.2.1 + + http://tizen.org/feature/fmradio Specify this key, if the application requires an FM radio. 2.2.1 @@ -968,6 +983,11 @@ 2.4 +http://tizen.org/feature/network.telephony.sms.cbs + Specify this key, if the application requires the SMS Cell Broadcast Service (CBS) feature. + 2.2.1 + + http://tizen.org/feature/network.tethering Specify this key, if the application requires any kind of tethering feature. 2.3 diff --git a/org.tizen.tutorials/html/native/app_framework/alarm_tutorial_n.htm b/org.tizen.tutorials/html/native/app_framework/alarm_tutorial_n.htm index 1d83892..9998a2a 100644 --- a/org.tizen.tutorials/html/native/app_framework/alarm_tutorial_n.htm +++ b/org.tizen.tutorials/html/native/app_framework/alarm_tutorial_n.htm @@ -196,7 +196,7 @@ service_app_control(app_control_h app_control, void *data) -

The following code schedules an application control to invoke after 4 seconds (using the date.tm_sec member). Using, for example, date.tm_mday, can sest the alarm to another day of the month. Since the third parameter is set to 0, the alarm is executed only once.

+

The following code schedules an application control to invoke after 4 seconds (using the date.tm_sec member). Using, for example, date.tm_mday, can set the alarm to another day of the month. Since the third parameter is set to 0, the alarm is executed only once.

struct tm date;
 ret = alarm_get_current_time(&date);
 
diff --git a/org.tizen.tutorials/html/native/multimedia/openal_tutorial_n.htm b/org.tizen.tutorials/html/native/multimedia/openal_tutorial_n.htm
index 1d8e037..926b0a2 100644
--- a/org.tizen.tutorials/html/native/multimedia/openal_tutorial_n.htm
+++ b/org.tizen.tutorials/html/native/multimedia/openal_tutorial_n.htm
@@ -20,12 +20,12 @@
         

Mobile native Wearable native

-

Content

+

Content

Related Info

Initializing OpenAL

@@ -72,9 +72,8 @@
  • -

    Get and open the default device.

    -

    To retrieve available devices, verify that a given extension is available, query the available device list, and open it.

    -

    To get the available device list, use the alcGetString() string query function.

    +

    Retrieve the default device name, and open the default device.

    +

    The following example code verifies that a given extension is available, retrieves the names of all available devices and the name of the default device using the alcGetString() function, and opens the default device using the alcOpenDevice() function:

     // Verify that a given extension is available for the current context
     enumeration = alcIsExtensionPresent(NULL, "ALC_ENUMERATION_EXT");
    @@ -83,11 +82,12 @@ if (enumeration == AL_FALSE)
        LOGI("[%s] enumeration extension not available", __func__);
     }
     
    -// Return a list of available devices
    -// Each device name is separated by a single NULL character and the list is terminated with 2 NULL characters
    +// Retrieve a list of available devices
    +// Each device name is separated by a single NULL character
    +// and the list is terminated with 2 NULL characters
     deviceNameList = alcGetString(NULL, ALC_DEVICE_SPECIFIER));
     
    -// Get a default device name
    +// Retrieve the default device name
     defaultDeviceName = alcGetString(NULL, ALC_DEFAULT_DEVICE_SPECIFIER);
     
     // Open the default device
    @@ -95,17 +95,17 @@ device = alcOpenDevice(defaultDeviceName);
     if (!device)
     {
        LOGI("[%s] unable to open default device", __func__);
    -  
    +
        return;
     }
     
     LOGI("[%s] Device : %s ", __func__, alcGetString(device, ALC_DEVICE_SPECIFIER));
     
    -

    With the default device name, the alcOpenDevice() function opens the audio device through the pulseaudio layer.

    +

    The alcOpenDevice() function opens the audio device through the pulseaudio layer.

  • -

    If the device is opened successfully, create a context using the alcCreateContext() function and set the active context using the alcMakeContextCurrent() with the device. Once the device is associated with a current context, the AL commands are applied to that context.

    +

    If the device is opened successfully, create a context for the device using the alcCreateContext() function, and set the context as active using the alcMakeContextCurrent() function:

     // Create context
    @@ -114,7 +114,7 @@ if (context == NULL)
     {
        alcCloseDevice(device);
        LOGI("[%s] failed to create context", __func__);
    -  
    +
        return;
     }
     
    @@ -124,20 +124,22 @@ if (!alcMakeContextCurrent(context))
        alcDestroyContext(context);
        alcCloseDevice(device);
        LOGI("[%s] failed to make default context", __func__);
    -  
    +
        return;
     }
     
    +

    Once the device is associated with an active context, the AL commands are applied to that context.

  • Requesting a Source and Audio Buffer

    +

    Playback requires a source object for controlling the playback, and a buffer object for storing the audio data to be played.

    To request a source and audio buffer:

    1. -

      You must control sound playing through a source object. Request a source using the alSources() function and update the source attributes (such as the default gain and sound position).

      +

      Request the source using the alSources() function, and update the source attributes, such as the default gain and sound position:

       // Request a source name
      @@ -152,8 +154,7 @@ alSource3f(source, AL_POSITION, 0, 0, 0);
       
    2. -

      Request a buffer and specify the allocated PCM buffer and size.

      -

      In this example, to read the WAV file from file system, the _data_buffer heap memory is allocated using the malloc() function. The dataSize parameter defines the amount of data to be buffered.

      +

      Request the audio buffer, and specify the allocated PCM buffer and size:

       // Request a buffer name
      @@ -166,7 +167,9 @@ ALenum format = AL_FORMAT_MONO8;
       alBufferData(buffer, format, _data_buffer, dataSize, frequency);
       
      -

      The following table defines the supported audio sample formats.

      +

      In the above example code, the _data_buffer parameter points to the audio sample data. The memory for the data has been allocated using the malloc() function. The dataSize parameter defines the amount of data to be buffered.

      + +

      The following table lists the supported audio sample formats:

      @@ -195,45 +198,44 @@ alBufferData(buffer, format, _data_buffer, dataSize, frequency); -

      Managing Audio Stream Playback

      +

      Controlling Audio Stream Playback

      -

      You can manage the playback through the following state transition commands:

      +

      To control the playback, use the following state transition functions:

        -
      • alSourcePlay(ALuint sName): Play, replay, or resume a source
      • -
      • alSourceStop(ALuint sName): Stop a list of sources
      • -
      • alSourceRewind(ALuint sName): Rewind a source (set the playback position to the beginning)
      • -
      • alSourcePause(ALuint sName): Pause a source
      - +
    3. alSourcePlay(): Play, replay, or resume a source.
    4. +
    5. alSourceStop(): Stop one or more sources.
    6. +
    7. alSourceRewind(): Rewind a source (set the playback position to the beginning).
    8. +
    9. alSourcePause(): Pause a source.
    10. -

      To play or stop the audio stream:

      +

      To start and stop playback:

      1. -

        To play the audio stream, implement the start event of the playback action (for example, a start button click)

        -

        In this example, the whole audio buffer is allocated and filled before the playback starts using the alSourcei() function. The second parameter specifies the source type as static. Start the audio playback right after changing the state to play.

        +

        To play the audio stream, implement the start event of the playback action (for example, a start button click).

        +

        In the following example code, the whole audio buffer is allocated and filled before the playback starts using the alSourcei() function. The second parameter specifies the source type as static. Start the playback after changing the state to play.

         // Function: _on_click1()
         // Source specifies the current buffer object
         alSourcei(source, AL_BUFFER, buffer);
         
        -// Change state to play
        +// Change the state to play
         alSourcePlay(source);
         
      2. -

        When a stop event is triggered, change the playback state to stop to end the audio playback:

        +

        When a stop event is triggered, change the playback state to stop to end the playback:

         // Function: _on_click2()
        -// Change state to stop
        +// Change the state to stop
         alSourceStop(source);
         
      3. -

        When the playback is finished, release the resources. Clean up the source, buffer, context, and device:

        +

        When the playback is finished, release the resources by cleaning up the source, buffer, context, and device:

         alDeleteSources(1, &source);
        @@ -248,13 +250,13 @@ alcCloseDevice(device);
         
         

        Using Buffer Queuing for Stream Playback

        -

        OpenAL provides a buffer queuing method for the streamed audio source, in which one or more buffers can be queued and dequeued after consumed:

        - +

        OpenAL provides a buffer queuing method for the streamed audio source, in which one or more buffers can be queued and dequeued after consumed.

        +

        To queue and play multiple buffers:

        1. -

          Multiple buffers (or one buffer) must be submitted before you can start the playback:

          +

          Submit one or more buffers before starting the playback:

           #define DATA_CHUNK_SIZE (1024)
          @@ -275,12 +277,11 @@ for (iLoop = 0; iLoop < 4; iLoop++)
           
        2. -

          Start the playback stream and push the buffer (for example, 1024 bytes) periodically on click events.

          -

          If a loop detects a number of consumed buffers (iBuffersProcessed) by querying AL_BUFFERS_PROCESSED, unqueue the consumed buffer with the alSourceUnqueueBuffers() function. Fill and queue again with the alSourceQueueBuffers() function to keep the playback going.

          -

          Run the loop in a thread separate from the application main thread.

          +

          Start the playback stream, and push the buffer (for example, 1024 bytes) periodically on click events.

          +

          If a loop detects a consumed buffer (iBuffersProcessed) by querying AL_BUFFERS_PROCESSED, dequeue the consumed buffer using the alSourceUnqueueBuffers() function. To continue the playback, fill and queue the buffer again using the alSourceQueueBuffers() function. Run the loop in a thread separate from the application main thread.

          -// Start to play streamed audio
          +// Start playing the streamed audio
           alSourcePlay(source);
           LOGI("[%s] alSourcePlay", __func__);
           
          @@ -288,18 +289,18 @@ LOGI("[%s] alSourcePlay", __func__);
           iBuffersProcessed = 0;
           while (!thread_finish)
           {
          -   usleep(10 * 1000);  // Sleep 10 msec periodically
          +   usleep(10 * 1000); // Sleep 10 msec periodically
           
              alGetSourcei(source, AL_BUFFERS_PROCESSED, &iBuffersProcessed);
           
              iTotalBuffersProcessed += iBuffersProcessed;
              ALOGI("Buffers Processed %d", iTotalBuffersProcessed);
           
          -   // For each processed buffer, remove it from the source queue, read next chunk of audio
          -   // data from disk, fill buffer with new data, and add it to the source queue
          +   // For each processed buffer, remove it from the source queue, read the next chunk of
          +   // audio data from the file, fill the buffer with new data, and add it to the source queue
              while (iBuffersProcessed)
              {
          -      // Remove the buffer from the queue (uiBuffer contains the buffer ID for the unqueued buffer)
          +      // Remove the buffer from the queue (uiBuffer contains the buffer ID for the dequeued buffer)
                 uiBuffer = 0;
                 alSourceUnqueueBuffers(source, 1, &uiBuffer);
           
          @@ -307,7 +308,7 @@ while (!thread_finish)
           
                 // Copy audio data to buffer
                 alBufferData(uiBuffer, AL_FORMAT_MONO8, pData, DATA_CHUNK_SIZE, 22050);
          -      // Insert audio buffer to source queue
          +      // Insert the audio buffer to the source queue
                 alSourceQueueBuffers(source, 1, &uiBuffer);
           
                 iBuffersProcessed--;
          diff --git a/org.tizen.tutorials/html/native/uix/voicecontrol_elm_tutorial_n.htm b/org.tizen.tutorials/html/native/uix/voicecontrol_elm_tutorial_n.htm
          index a005792..7acc75c 100644
          --- a/org.tizen.tutorials/html/native/uix/voicecontrol_elm_tutorial_n.htm
          +++ b/org.tizen.tutorials/html/native/uix/voicecontrol_elm_tutorial_n.htm
          @@ -149,12 +149,12 @@ void language_changed_cb(const char *previous, const char *current, void* user_d
           { 
              if ("en_US" == current) 
              {
          -      vc_elm_set_command(handler, "button");;
          +      vc_elm_set_command(handler, "button");
                 vc_elm_set_command_hint(handler, "button");
              }
              else if ("ko_KR" = current) 
              {
          -      vc_elm_set_command(handler, "버튼");;
          +      vc_elm_set_command(handler, "버튼");
                 vc_elm_set_command_hint(handler, "버튼");
              }
           }
          diff --git a/org.tizen.tutorials/html/native/uix/voicecontrol_tutorial_n.htm b/org.tizen.tutorials/html/native/uix/voicecontrol_tutorial_n.htm
          index f782e33..3727554 100644
          --- a/org.tizen.tutorials/html/native/uix/voicecontrol_tutorial_n.htm
          +++ b/org.tizen.tutorials/html/native/uix/voicecontrol_tutorial_n.htm
          @@ -268,7 +268,7 @@ void __result_cb(vc_result_event_e event, vc_cmd_list_h vc_cmd_list, const char*
              int type = 0;
              char* cmd = NULL;
              vc_cmd_h result_command = NULL;
          -   for (i = 0;i < count;i++) 
          +   for (i = 0; i < count; i++) 
              {
                 result_command = NULL;
                 ret = vc_cmd_list_get_current(vc_cmd_list, &result_command);
          diff --git a/org.tizen.ui.practices/html/native/efl/component_calendar_mn.htm b/org.tizen.ui.practices/html/native/efl/component_calendar_mn.htm
          index a0a7eb8..e718a69 100644
          --- a/org.tizen.ui.practices/html/native/efl/component_calendar_mn.htm
          +++ b/org.tizen.ui.practices/html/native/efl/component_calendar_mn.htm
          @@ -71,7 +71,7 @@ elm_calendar_selected_time_set(calendar, gmtime(&the_time));
           elm_calendar_first_day_of_week_set(calendar, ELM_DAY_MONDAY);
           
        3. -
        4. To modify the names of the weekdays, use the elm_calcendar_weekdays_names_set() function:

          +
        5. To modify the names of the weekdays, use the elm_calendar_weekdays_names_set() function:

           const char *weekname[7] = {"A", "B", "C", "D", "E", "F", "G"};
           elm_calendar_weekdays_names_set(calendar, &weekname);
          diff --git a/org.tizen.ui.practices/html/native/efl/component_gengrid_mn.htm b/org.tizen.ui.practices/html/native/efl/component_gengrid_mn.htm
          index 5a34715..4db9db8 100644
          --- a/org.tizen.ui.practices/html/native/efl/component_gengrid_mn.htm
          +++ b/org.tizen.ui.practices/html/native/efl/component_gengrid_mn.htm
          @@ -178,9 +178,9 @@ elm_gengrid_multi_select_set(gengrid, EINA_TRUE);
           
           

          When the content of an item changes, you can call the elm_gengrid_item_update() function to ask the gengrid to update this item. The gengrid re-realizes the item and calls the functions in the _Elm_Gengrid_Item_Class for it.

          If you want to change some parts of the items, you can also use the elm_gengrid_item_fields_update() function for the specific parts:

          -
          • ELM_GENGRID_ITEM_FEILD_TEXT
          • -
          • ELM_GENGRID_ITEM_FEILD_CONTENT
          • -
          • ELM_GENGRID_ITEM_FEILD_STATE
          +
          • ELM_GENGRID_ITEM_FIELD_TEXT
          • +
          • ELM_GENGRID_ITEM_FIELD_CONTENT
          • +
          • ELM_GENGRID_ITEM_FIELD_STATE

          It is also possible to select or disable some items manually with the elm_gengrid_item_selected_set() and elm_object_item_disabled_set() functions.

          @@ -209,7 +209,7 @@ elm_gengrid_multi_select_set(gengrid, EINA_TRUE);
        6. scroll: The content is scrolled (moved).
        7. scroll,drag,start: Dragging the content starts.
        8. scroll,drag,stop: Dragging the content stops.
        9. -
        10. scroll,page,changed: Dragging changes the page.
        11. +
        12. scroll,page,changed: The visible page changes.
        13. edge,top: The gengrid is scrolled to the top edge.
        14. edge,bottom: The gengrid is scrolled to the bottom edge.
        15. edge,left: The gengrid is scrolled to the left edge.
        16. diff --git a/org.tizen.ui.practices/html/native/efl/component_genlist_mn.htm b/org.tizen.ui.practices/html/native/efl/component_genlist_mn.htm index 0eb87e2..528d52b 100644 --- a/org.tizen.ui.practices/html/native/efl/component_genlist_mn.htm +++ b/org.tizen.ui.practices/html/native/efl/component_genlist_mn.htm @@ -296,7 +296,7 @@ select_cb(void *data, Evas_Object *obj, void *event_info)

          By default, the genlist is in single-selection mode: only one item can be selected at a time. You can use elm_genlist_multi_select_set() to select multiple items. In the single-selection mode, the elm_genlist_selected_item_get() function can be called to retrieve the selected item. If several items are selected, the elm_genlist_selected_items_get() returns a list of the currently selected items.

          -

          In the following figure, there is a genlist in multi-selection mode with two items selected (#4 and #5) and one item disabled (#2).

          +

          In the following figure, the 3rd item is disabled and 5th and 6th item are selected in the multi-selection mode. (The check component works independently of the genlist item; unless it receives an event directly, you must change its state manually in the selected callback of the genlist item.)

          Figure: Genlist item selection highlight

          Genlist item selection highlight

          diff --git a/org.tizen.ui.practices/html/native/efl/component_index_mn.htm b/org.tizen.ui.practices/html/native/efl/component_index_mn.htm index da35f52..58d77d4 100644 --- a/org.tizen.ui.practices/html/native/efl/component_index_mn.htm +++ b/org.tizen.ui.practices/html/native/efl/component_index_mn.htm @@ -85,7 +85,7 @@ elm_index_horizontal_set(index, EINA_TRUE);

          The autohide feature is enabled by default. Autohide can be disabled with the elm_index_autohide_disabled_set() function:

          -elm_index_autohide_disabled_set(index, EINA_TURE);
          +elm_index_autohide_disabled_set(index, EINA_TRUE);
           

          Adding Items

          diff --git a/org.tizen.ui.practices/html/native/efl/edc_part_block_n.htm b/org.tizen.ui.practices/html/native/efl/edc_part_block_n.htm index c613e64..77f83c9 100644 --- a/org.tizen.ui.practices/html/native/efl/edc_part_block_n.htm +++ b/org.tizen.ui.practices/html/native/efl/edc_part_block_n.htm @@ -1182,7 +1182,7 @@ box/table
        17. spread [width] [height] -

          Replicates the item in a rectangle of size (width x height) box starting from the defined position of this item. The default value is 1 1;.

          +

          Replicates the item in a rectangle of size (width x height) box starting from the defined position of this item. The default value is 1 1.

        18. prefer [width] [height] diff --git a/org.tizen.ui.practices/html/native/efl/menu_tutorial_mn.htm b/org.tizen.ui.practices/html/native/efl/menu_tutorial_mn.htm index 7287e25..bcd89c4 100644 --- a/org.tizen.ui.practices/html/native/efl/menu_tutorial_mn.htm +++ b/org.tizen.ui.practices/html/native/efl/menu_tutorial_mn.htm @@ -461,7 +461,7 @@ _build_main_view(appdata_s *ad)    evas_object_size_hint_weight_set(view->img, EVAS_HINT_FILL, EVAS_HINT_FILL);    evas_object_size_hint_align_set(view->img, 0.5, 0.5);    evas_object_size_hint_min_set(view->img, 256, 256); -   ;snprintf(buf, sizeof(buf), "%s/%s", ICON_DIR, "tizen-logo.png"); +   snprintf(buf, sizeof(buf), "%s/%s", ICON_DIR, "tizen-logo.png");    if (!elm_image_file_set(view->img, buf, NULL))       elm_object_text_set(view->lb_day, "Problem loading image");    elm_box_pack_start(view->box, view->img); diff --git a/org.tizen.ui.practices/html/web/tau/tau_porting_w.htm b/org.tizen.ui.practices/html/web/tau/tau_porting_w.htm index a78c928..bb07418 100644 --- a/org.tizen.ui.practices/html/web/tau/tau_porting_w.htm +++ b/org.tizen.ui.practices/html/web/tau/tau_porting_w.htm @@ -59,9 +59,9 @@    <head>       <script type="text/javascript" src="../lib/tau/mobile/js/tau.js"></script>       <script type="text/javascript" src="../lib/tau/mobile/js/tau.support-2.3.js"></script> -      <link rel="stylesheet"  href="../lib/tau/mobile/theme/default/tau.css"> -      <link rel="stylesheet"  href="../lib/tau/mobile/theme/default/tau.support-2.3.css"> -      <link rel="stylesheet"  href="css/custom.css"> +      <link rel="stylesheet" href="../lib/tau/mobile/theme/default/tau.css"> +      <link rel="stylesheet" href="../lib/tau/mobile/theme/default/tau.support-2.3.css"> +      <link rel="stylesheet" href="css/custom.css">    </head> </html>
        @@ -381,7 +381,7 @@ <script>    var collapsibleElement = document.getElementById("collapsible"), -       collapsible = tau.widget.Collapsible(collapsibleElement);l +       collapsible = tau.widget.Collapsible(collapsibleElement); </script> diff --git a/org.tizen.ui.practices/html/web/w3c/ui_layout_ww.htm b/org.tizen.ui.practices/html/web/w3c/ui_layout_ww.htm index 0779a7f..35e7601 100644 --- a/org.tizen.ui.practices/html/web/w3c/ui_layout_ww.htm +++ b/org.tizen.ui.practices/html/web/w3c/ui_layout_ww.htm @@ -479,7 +479,7 @@ html, body {width: 100%; height: 100%; overflow-x: hidden;} <section id="main">    <header>HEADER</header>    <article id="content"> -      lt;ul> +      <ul>          <li>List Item 1</li>          <li>List Item 2</li>          <li>List Item 3</li> @@ -634,7 +634,7 @@ header, footer        page = document.getElementById("main"),        scrollPosition = window.parseInt(window.getComputedStyle(page)["padding-top"]),        initScrollTimeoutId = null, -       mql = window.matchMedia("(-tizen-geometric-shape: circle)");; +       mql = window.matchMedia("(-tizen-geometric-shape: circle)");    /* The effect is applied to a circular device only, so use mediaquery */    if (mql.matches)
      Table: Supported audio sample formats