Las tecnologías que permiten la transmisión de una cantidad cada vez mayor de datos a través de medios convencionales como la línea telefónica evolucionan rápidamente. Con eso, nuevos servicios y nuevas características se hacen disponibles, resultando en nuevos equipos que hacen nuestra vida más cómoda, más segura y más simple. Este es el caso de la voz de alta definición sobre o HD-VoIP, de la que trataremos en este artículo, basado en una amplia documentación de Texas Instruments que se ha escrito en 2007.

Con la finalidad de conseguir la transmisión de voz con niveles más altos de calidad y desempeño a través de protocolos de internet (IP), Texas Instruments (www.ti.com), anunció en abril mejoras en su tecnología que redefinen soluciones para sus necesidades aplicaciones de voz sobre IP (VoIP).

Con estas redefiniciones, las aplicaciones ofrecidas se aproximan más aún a la obtención de voz de alta definición a través de protocolos de Internet (VoIP).

Para estas aplicaciones, Texas Instruments está licenciando un nuevo códec de super banda ancha del tipo AAC de bajo retardo, a partir del Fraunhofer Institute for Integrated Circuits IIS, con sede en Erlanger, Alemania.

El Instituto Fraunhofer es donde se inventó el MP3 y además son co-inventores de la codificación de audio AAC.

Alimentado por los DSP de alto rendimiento de Texas Instruments, el códec MPEG-4 AAC-LD de superbanda ancha ofrece beneficios sustanciales en comparación con las anteriores tecnologías de audio. Además, su rendimiento hará que la voz de alta definición (HD), normal sobre las redes IP globales. Para quien quiera saber más, Texas Instruments presenta información detallada sobre el tema en www.ti.com/visionforvoice.

La nueva tecnología permite transmitir voz con una tasa de muestreo que llega a los 48 kHz, lo que significa una mejora considerable en relación a las tecnologías de banda estrecha.

Esto significa una calidad de audio cercana a la de los CDs, con tasas de muestreo en el rango de 48 a 64 kbps, para aplicaciones mejor como voz y vídeo sobre IP, así como la transmisión de música a través del teléfono.

Cuanto mayor sea la tasa de muestreo de una señal de audio, mayor será su calidad, con las bandas pasantes extendiéndose y abarcando tanto el extremo de las altas como de las bajas frecuencias. Esto significa una considerable diferencia tanto en la resonancia y la inteligibilidad de la voz.

De la misma forma que la televisión de alta definición (HDTV) revolucionó el modo en que se ve la televisión y la radio de alta definición (HD radio) mejora la comunicación de millones de personas, HD voice, como se llama esta nueva tecnología, traerá nuevos canales para la comunicación de voz de alta calidad.

Otro punto importante a considerar es que con una mejor calidad de voz será posible implementar ciertos tipos de recursos que hoy son imposibles, como el reconocimiento de voz, el control remoto a través de la voz e incluso la traducción simultánea.

Evidentemente, para soportar esta nueva tecnología deben ocurrir de forma simultánea avances en las tecnologías de redes, y en el caso del uso doméstico será posible que las personas hagan prácticamente todo por el simple comando de voz. Las luces de la habitación, el televisor, el ventilador e incluso la atención a un toque de timbre pueden ser hechas por el simple pronunciar de una palabra del usuario, como sugiere la figura 1 ..

 

Figura 1 - poniendo en funcionamiento un horno de microondas por el teléfono
Figura 1 - poniendo en funcionamiento un horno de microondas por el teléfono "prepare el almuerzo, por favor!".

 

 

Con esta tecnología de super-banda, las soluciones VoIP de Texas Instruments posibilita el envío de sonido con calidad de CD en comunicaciones por teléfono además de soportar una gama completa de funciones de voz y música, incluyendo audio comparable al MP3.

En la figura 2 mostramos un ejemplo de recurso que va a ser posible con esta tecnología que es la traducción en línea de la palabra hablada.

 

Figura 2 - Traducción en línea
Figura 2 - Traducción en línea

 

 

 

Como funciona

 

En los sistemas de definición estándar o estándar (ST) para transmisión de voz, el muestreo se realiza por codecs lentos, operando con 8 k muestreos por segundo (8 kbps), convirtiéndola en un código de 8 bits que corresponde a 64 kbps, lo que resulta en una calidad de sonido que puede compararse con la radio AM.

Por otro lado, en el sistema de banda ancha o alta definición de alta definición o HD el muestreo se realiza a una tasa de 32 kbps de ancho, lo que es posible gracias a una avanzada técnica de compresión, como muestra la figura 3 ..

Con ello es posible obtener sonido de excelente fidelidad hasta el punto de poder aplicar técnicas avanzadas de procesamiento como las necesarias para el reconocimiento de voz.

 


 

 

 

El uso de estas técnicas se debe a los avances que los estándares IEEE 802.11 de comunicación vía red viene pasando. De los 800 kbps a 50 Mbps vía cable, llegando a 100 Mbps en los sistemas ópticos e incluso más.

Con eso no sólo vídeo a través de la red, sino también audio de alta calidad se puede transmitir.

Ver que está ocurriendo con el audio y el vídeo a través de redes algo similar a lo que ocurrió con el sonido y la imagen en el televisor convencional. El televisor en color vino antes del sonido estéreo en TV y el televisor de alta definición pasó a ser tratado casi simultáneamente con la transmisión de sonido en diversos canales.

 

 

18.9MBMemory Usage53.14msRequest Duration
Joomla! Version5.2.3
PHP Version8.3.16
Identityguest
Response200
Templatecassiopeia
Database
Server
mysql
Version
10.5.22-MariaDB
Collation
latin1_swedish_ci
Conn Collation
utf8mb4_general_ci
$_GET
[]
$_POST
[]
$_SESSION
array:1 [ "joomla" => "***redacted***" ]
$_COOKIE
[]
$_SERVER
array:51 [ "USER" => "apache" "HOME" => "/usr/share/httpd" "SCRIPT_NAME" => "/index.php" "RE...
session
array:3 [ "counter" => 1 "timer" => array:3 [ "start" => 1741944060 "last" => 1741944060...
registry
array:3 [ "data" => [] "initialized" => false "separator" => "." ]
user
array:21 [ "id" => 0 "name" => null "username" => null "email" => null "password" => "***r...
  • afterLoad (85.73KB) (793μs)
  • afterInitialise (1.14MB) (5.69ms)
  • afterRoute (179.16KB) (1.4ms)
  • beforeRenderComponent com_content (100.65KB) (430μs)
  • Before Access::preloadComponents (all components) (33.5KB) (313μs)
  • After Access::preloadComponents (all components) (107.06KB) (683μs)
  • Before Access::preloadPermissions (com_content) (1.57KB) (7μs)
  • After Access::preloadPermissions (com_content) (16.19MB) (27.52ms)
  • Before Access::getAssetRules (id:27177 name:com_content.article.30811) (514.65KB) (691μs)
  • After Access::getAssetRules (id:27177 name:com_content.article.30811) (7.38KB) (39μs)
  • afterRenderComponent com_content (382.21KB) (7.51ms)
  • afterDispatch (2.25KB) (59μs)
  • beforeRenderRawModule mod_articles_category (Banco de Circuitos) (359.33KB) (2.01ms)
  • afterRenderRawModule mod_articles_category (Banco de Circuitos) (79.43KB) (315μs)
  • beforeRenderRawModule mod_finder (Busca_inteligente) (5.9KB) (133μs)
  • afterRenderRawModule mod_finder (Busca_inteligente) (64.98KB) (1.34ms)
  • beforeRenderModule mod_articles_category (Banco de Circuitos) (9.98KB) (579μs)
  • afterRenderModule mod_articles_category (Banco de Circuitos) (5.14KB) (89μs)
  • beforeRenderModule mod_finder (Busca_inteligente) (6.14KB) (213μs)
  • afterRenderModule mod_finder (Busca_inteligente) (4.75KB) (53μs)
  • afterRender (257.73KB) (3.17ms)
  • 1 x After Access::preloadPermissions (com_content) (16.19MB) (51.8%)
    27.52ms
    1 x afterRenderComponent com_content (382.21KB) (14.13%)
    7.51ms
    1 x afterInitialise (1.14MB) (10.7%)
    5.69ms
    1 x afterRender (257.73KB) (5.97%)
    3.17ms
    1 x beforeRenderRawModule mod_articles_category (Banco de Circuitos) (359.33KB) (3.78%)
    2.01ms
    1 x afterRoute (179.16KB) (2.63%)
    1.40ms
    1 x afterRenderRawModule mod_finder (Busca_inteligente) (64.98KB) (2.52%)
    1.34ms
    1 x afterLoad (85.73KB) (1.49%)
    793μs
    1 x Before Access::getAssetRules (id:27177 name:com_content.article.30811) (514.65KB) (1.3%)
    691μs
    1 x After Access::preloadComponents (all components) (107.06KB) (1.29%)
    683μs
    1 x beforeRenderModule mod_articles_category (Banco de Circuitos) (9.98KB) (1.09%)
    579μs
    1 x beforeRenderComponent com_content (100.65KB) (0.81%)
    430μs
    1 x afterRenderRawModule mod_articles_category (Banco de Circuitos) (79.43KB) (0.59%)
    315μs
    1 x Before Access::preloadComponents (all components) (33.5KB) (0.59%)
    313μs
    1 x beforeRenderModule mod_finder (Busca_inteligente) (6.14KB) (0.4%)
    213μs
    1 x beforeRenderRawModule mod_finder (Busca_inteligente) (5.9KB) (0.25%)
    133μs
    1 x afterRenderModule mod_articles_category (Banco de Circuitos) (5.14KB) (0.17%)
    89μs
    1 x afterDispatch (2.25KB) (0.11%)
    59μs
    1 x afterRenderModule mod_finder (Busca_inteligente) (4.75KB) (0.1%)
    53μs
    1 x After Access::getAssetRules (id:27177 name:com_content.article.30811) (7.38KB) (0.07%)
    39μs
    1 x Before Access::preloadPermissions (com_content) (1.57KB) (0.01%)
    7μs
21 statements were executed, 5 of which were duplicates, 16 unique13.55ms1.57MB
  • SELECT @@SESSION.sql_mode;36μs968B/libraries/src/Session/MetadataManager.php:184Copy
  • SELECT `session_id` FROM `incbmx_session` WHERE `session_id` = :session_id LIMIT 189μs1.3KBParams/libraries/src/Session/MetadataManager.php:187Copy
  • INSERT INTO `incbmx_session` (`session_id`,`guest`,`time`,`userid`,`username`,`client_id`) VALUES (:session_id, :guest, :time, :user_id, :username, :client_id)208μs944BParams/libraries/src/Session/MetadataManager.php:260Copy
  • SELECT `id`,`rules` FROM `incbmx_viewlevels`50μs656B/libraries/src/Access/Access.php:955Copy
  • SELECT `b`.`id` FROM `incbmx_usergroups` AS `a` LEFT JOIN `incbmx_usergroups` AS `b` ON `b`.`lft` <= `a`.`lft` AND `b`.`rgt` >= `a`.`rgt` WHERE `a`.`id` = :guest76μs1.64KBParams/libraries/src/Access/Access.php:868Copy
  • SELECT `c`.`id`,`c`.`asset_id`,`c`.`access`,`c`.`alias`,`c`.`checked_out`,`c`.`checked_out_time`,`c`.`created_time`,`c`.`created_user_id`,`c`.`description`,`c`.`extension`,`c`.`hits`,`c`.`language`,`c`.`level`,`c`.`lft`,`c`.`metadata`,`c`.`metadesc`,`c`.`metakey`,`c`.`modified_time`,`c`.`note`,`c`.`params`,`c`.`parent_id`,`c`.`path`,`c`.`published`,`c`.`rgt`,`c`.`title`,`c`.`modified_user_id`,`c`.`version`, CASE WHEN CHAR_LENGTH(`c`.`alias`) != 0 THEN CONCAT_WS(':', `c`.`id`, `c`.`alias`) ELSE `c`.`id` END as `slug` FROM `incbmx_categories` AS `s` INNER JOIN `incbmx_categories` AS `c` ON (`s`.`lft` <= `c`.`lft` AND `c`.`lft` < `s`.`rgt`) OR (`c`.`lft` < `s`.`lft` AND `s`.`rgt` < `c`.`rgt`) WHERE (`c`.`extension` = :extension OR `c`.`extension` = 'system') AND `c`.`published` = 1 AND `s`.`id` = :id ORDER BY `c`.`lft`255μs20.2KBParams/libraries/src/Categories/Categories.php:375Copy
  • SELECT `id`,`name`,`rules`,`parent_id` FROM `incbmx_assets` WHERE `name` IN (:preparedArray1,:preparedArray2,:preparedArray3,:preparedArray4,:preparedArray5,:preparedArray6,:preparedArray7,:preparedArray8,:preparedArray9,:preparedArray10,:preparedArray11,:preparedArray12,:preparedArray13,:preparedArray14,:preparedArray15,:preparedArray16,:preparedArray17,:preparedArray18,:preparedArray19,:preparedArray20,:preparedArray21,:preparedArray22,:preparedArray23,:preparedArray24,:preparedArray25,:preparedArray26,:preparedArray27,:preparedArray28,:preparedArray29,:preparedArray30,:preparedArray31,:preparedArray32,:preparedArray33,:preparedArray34,:preparedArray35,:preparedArray36,:preparedArray37,:preparedArray38,:preparedArray39)495μs7.44KBParams/libraries/src/Access/Access.php:357Copy
  • SELECT `id`,`name`,`rules`,`parent_id` FROM `incbmx_assets` WHERE `name` LIKE :asset OR `name` = :extension OR `parent_id` = 09.31ms1.46MBParams/libraries/src/Access/Access.php:301Copy
  • SHOW FULL COLUMNS FROM `incbmx_content`384μs2.39KB/libraries/vendor/joomla/database/src/Mysqli/MysqliDriver.php:587Copy
  • UPDATE `incbmx_content` SET `hits` = (`hits` + 1) WHERE `id` = '30811'182μs48B/libraries/src/Table/Table.php:1348Copy
  • SELECT `a`.`id`,`a`.`asset_id`,`a`.`title`,`a`.`alias`,`a`.`introtext`,`a`.`fulltext`,`a`.`state`,`a`.`catid`,`a`.`created`,`a`.`created_by`,`a`.`created_by_alias`,`a`.`modified`,`a`.`modified_by`,`a`.`checked_out`,`a`.`checked_out_time`,`a`.`publish_up`,`a`.`publish_down`,`a`.`images`,`a`.`urls`,`a`.`attribs`,`a`.`version`,`a`.`ordering`,`a`.`metakey`,`a`.`metadesc`,`a`.`access`,`a`.`hits`,`a`.`metadata`,`a`.`featured`,`a`.`language`,`fp`.`featured_up`,`fp`.`featured_down`,`c`.`title` AS `category_title`,`c`.`alias` AS `category_alias`,`c`.`access` AS `category_access`,`c`.`language` AS `category_language`,`fp`.`ordering`,`u`.`name` AS `author`,`parent`.`title` AS `parent_title`,`parent`.`id` AS `parent_id`,`parent`.`path` AS `parent_route`,`parent`.`alias` AS `parent_alias`,`parent`.`language` AS `parent_language`,ROUND(`v`.`rating_sum` / `v`.`rating_count`, 1) AS `rating`,`v`.`rating_count` AS `rating_count` FROM `incbmx_content` AS `a` INNER JOIN `incbmx_categories` AS `c` ON `c`.`id` = `a`.`catid` LEFT JOIN `incbmx_content_frontpage` AS `fp` ON `fp`.`content_id` = `a`.`id` LEFT JOIN `incbmx_users` AS `u` ON `u`.`id` = `a`.`created_by` LEFT JOIN `incbmx_categories` AS `parent` ON `parent`.`id` = `c`.`parent_id` LEFT JOIN `incbmx_content_rating` AS `v` ON `a`.`id` = `v`.`content_id` WHERE ( (`a`.`id` = :pk AND `c`.`published` > 0) AND (`a`.`publish_up` IS NULL OR `a`.`publish_up` <= :publishUp)) AND (`a`.`publish_down` IS NULL OR `a`.`publish_down` >= :publishDown) AND `a`.`state` IN (:preparedArray1,:preparedArray2)192μs22.13KBParams/components/com_content/src/Model/ArticleModel.php:215Copy
  • SELECT `c`.`id`,`c`.`asset_id`,`c`.`access`,`c`.`alias`,`c`.`checked_out`,`c`.`checked_out_time`,`c`.`created_time`,`c`.`created_user_id`,`c`.`description`,`c`.`extension`,`c`.`hits`,`c`.`language`,`c`.`level`,`c`.`lft`,`c`.`metadata`,`c`.`metadesc`,`c`.`metakey`,`c`.`modified_time`,`c`.`note`,`c`.`params`,`c`.`parent_id`,`c`.`path`,`c`.`published`,`c`.`rgt`,`c`.`title`,`c`.`modified_user_id`,`c`.`version`, CASE WHEN CHAR_LENGTH(`c`.`alias`) != 0 THEN CONCAT_WS(':', `c`.`id`, `c`.`alias`) ELSE `c`.`id` END as `slug` FROM `incbmx_categories` AS `s` INNER JOIN `incbmx_categories` AS `c` ON (`s`.`lft` <= `c`.`lft` AND `c`.`lft` < `s`.`rgt`) OR (`c`.`lft` < `s`.`lft` AND `s`.`rgt` < `c`.`rgt`) WHERE (`c`.`extension` = :extension OR `c`.`extension` = 'system') AND `c`.`access` IN (:preparedArray1,:preparedArray2) AND `c`.`published` = 1 AND `s`.`id` = :id ORDER BY `c`.`lft`255μs3.92KBParams/libraries/src/Categories/Categories.php:375Copy
  • SELECT `m`.`tag_id`,`t`.* FROM `incbmx_contentitem_tag_map` AS `m` INNER JOIN `incbmx_tags` AS `t` ON `m`.`tag_id` = `t`.`id` WHERE `m`.`type_alias` = :contentType AND `m`.`content_item_id` = :id AND `t`.`published` = 1 AND `t`.`access` IN (:preparedArray1,:preparedArray2)413μs3.98KBParams/libraries/src/Helper/TagsHelper.php:388Copy
  • SELECT `c`.`id`,`c`.`asset_id`,`c`.`access`,`c`.`alias`,`c`.`checked_out`,`c`.`checked_out_time`,`c`.`created_time`,`c`.`created_user_id`,`c`.`description`,`c`.`extension`,`c`.`hits`,`c`.`language`,`c`.`level`,`c`.`lft`,`c`.`metadata`,`c`.`metadesc`,`c`.`metakey`,`c`.`modified_time`,`c`.`note`,`c`.`params`,`c`.`parent_id`,`c`.`path`,`c`.`published`,`c`.`rgt`,`c`.`title`,`c`.`modified_user_id`,`c`.`version`, CASE WHEN CHAR_LENGTH(`c`.`alias`) != 0 THEN CONCAT_WS(':', `c`.`id`, `c`.`alias`) ELSE `c`.`id` END as `slug` FROM `incbmx_categories` AS `s` INNER JOIN `incbmx_categories` AS `c` ON (`s`.`lft` <= `c`.`lft` AND `c`.`lft` < `s`.`rgt`) OR (`c`.`lft` < `s`.`lft` AND `s`.`rgt` < `c`.`rgt`) WHERE (`c`.`extension` = :extension OR `c`.`extension` = 'system') AND `c`.`access` IN (:preparedArray1,:preparedArray2) AND `c`.`published` = 1 AND `s`.`id` = :id ORDER BY `c`.`lft`228μs3.92KBParams/libraries/src/Categories/Categories.php:375Copy
  • SELECT DISTINCT a.id, a.title, a.name, a.checked_out, a.checked_out_time, a.note, a.state, a.access, a.created_time, a.created_user_id, a.ordering, a.language, a.fieldparams, a.params, a.type, a.default_value, a.context, a.group_id, a.label, a.description, a.required, a.only_use_in_subform,l.title AS language_title, l.image AS language_image,uc.name AS editor,ag.title AS access_level,ua.name AS author_name,g.title AS group_title, g.access as group_access, g.state AS group_state, g.note as group_note FROM incbmx_fields AS a LEFT JOIN `incbmx_languages` AS l ON l.lang_code = a.language LEFT JOIN incbmx_users AS uc ON uc.id=a.checked_out LEFT JOIN incbmx_viewlevels AS ag ON ag.id = a.access LEFT JOIN incbmx_users AS ua ON ua.id = a.created_user_id LEFT JOIN incbmx_fields_groups AS g ON g.id = a.group_id LEFT JOIN `incbmx_fields_categories` AS fc ON fc.field_id = a.id WHERE ( (`a`.`context` = :context AND (`fc`.`category_id` IS NULL OR `fc`.`category_id` IN (:preparedArray1,:preparedArray2,:preparedArray3)) AND `a`.`access` IN (:preparedArray4,:preparedArray5)) AND (`a`.`group_id` = 0 OR `g`.`access` IN (:preparedArray6,:preparedArray7)) AND `a`.`state` = :state) AND (`a`.`group_id` = 0 OR `g`.`state` = :gstate) AND `a`.`only_use_in_subform` = :only_use_in_subform ORDER BY a.ordering ASC539μs4.81KBParams/libraries/src/MVC/Model/BaseDatabaseModel.php:164Copy
  • SELECT `c`.`id`,`c`.`asset_id`,`c`.`access`,`c`.`alias`,`c`.`checked_out`,`c`.`checked_out_time`,`c`.`created_time`,`c`.`created_user_id`,`c`.`description`,`c`.`extension`,`c`.`hits`,`c`.`language`,`c`.`level`,`c`.`lft`,`c`.`metadata`,`c`.`metadesc`,`c`.`metakey`,`c`.`modified_time`,`c`.`note`,`c`.`params`,`c`.`parent_id`,`c`.`path`,`c`.`published`,`c`.`rgt`,`c`.`title`,`c`.`modified_user_id`,`c`.`version`, CASE WHEN CHAR_LENGTH(`c`.`alias`) != 0 THEN CONCAT_WS(':', `c`.`id`, `c`.`alias`) ELSE `c`.`id` END as `slug` FROM `incbmx_categories` AS `s` INNER JOIN `incbmx_categories` AS `c` ON (`s`.`lft` <= `c`.`lft` AND `c`.`lft` < `s`.`rgt`) OR (`c`.`lft` < `s`.`lft` AND `s`.`rgt` < `c`.`rgt`) WHERE (`c`.`extension` = :extension OR `c`.`extension` = 'system') AND `c`.`access` IN (:preparedArray1,:preparedArray2) AND `c`.`published` = 1 AND `s`.`id` = :id ORDER BY `c`.`lft`275μs3.92KBParams/libraries/src/Categories/Categories.php:375Copy
  • SELECT `name`,`element` FROM `incbmx_extensions` WHERE `type` = 'plugin' AND `folder` = 'finder' AND `enabled` = 1162μs1.89KB/administrator/components/com_finder/src/Helper/LanguageHelper.php:135Copy
  • SELECT `title` FROM `incbmx_finder_taxonomy` WHERE `parent_id` = 1 AND `state` = 1 AND `access` IN (1,5)107μs648B/administrator/components/com_finder/src/Indexer/Taxonomy.php:325Copy
  • SELECT * FROM `incbmx_schemaorg` WHERE `itemId` = :itemId AND `context` = :context57μs1.55KBParams/plugins/system/schemaorg/src/Extension/Schemaorg.php:403Copy
  • SELECT `a`.`id`,`a`.`asset_id`,`a`.`title`,`a`.`alias`,`a`.`introtext`,`a`.`fulltext`,`a`.`state`,`a`.`catid`,`a`.`created`,`a`.`created_by`,`a`.`created_by_alias`,`a`.`modified`,`a`.`modified_by`,`a`.`checked_out`,`a`.`checked_out_time`,`a`.`publish_up`,`a`.`publish_down`,`a`.`images`,`a`.`urls`,`a`.`attribs`,`a`.`version`,`a`.`ordering`,`a`.`metakey`,`a`.`metadesc`,`a`.`access`,`a`.`hits`,`a`.`metadata`,`a`.`featured`,`a`.`language`,`fp`.`featured_up`,`fp`.`featured_down`,`c`.`title` AS `category_title`,`c`.`alias` AS `category_alias`,`c`.`access` AS `category_access`,`c`.`language` AS `category_language`,`fp`.`ordering`,`u`.`name` AS `author`,`parent`.`title` AS `parent_title`,`parent`.`id` AS `parent_id`,`parent`.`path` AS `parent_route`,`parent`.`alias` AS `parent_alias`,`parent`.`language` AS `parent_language`,ROUND(`v`.`rating_sum` / `v`.`rating_count`, 1) AS `rating`,`v`.`rating_count` AS `rating_count` FROM `incbmx_content` AS `a` INNER JOIN `incbmx_categories` AS `c` ON `c`.`id` = `a`.`catid` LEFT JOIN `incbmx_content_frontpage` AS `fp` ON `fp`.`content_id` = `a`.`id` LEFT JOIN `incbmx_users` AS `u` ON `u`.`id` = `a`.`created_by` LEFT JOIN `incbmx_categories` AS `parent` ON `parent`.`id` = `c`.`parent_id` LEFT JOIN `incbmx_content_rating` AS `v` ON `a`.`id` = `v`.`content_id` WHERE ( (`a`.`id` = :pk AND `c`.`published` > 0) AND (`a`.`publish_up` IS NULL OR `a`.`publish_up` <= :publishUp)) AND (`a`.`publish_down` IS NULL OR `a`.`publish_down` >= :publishDown) AND `a`.`state` IN (:preparedArray1,:preparedArray2)172μs22.17KBParams/components/com_content/src/Model/ArticleModel.php:215Copy
  • SELECT SUM(CASE WHEN `a`.`next_execution` <= :now THEN 1 ELSE 0 END) AS due_count,SUM(CASE WHEN `a`.`locked` IS NULL THEN 0 ELSE 1 END) AS locked_count FROM `incbmx_scheduler_tasks` AS `a` WHERE `a`.`state` = 169μs1.37KBParams/administrator/components/com_scheduler/src/Model/TasksModel.php:465Copy