<p>Alexander Traud has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.asterisk.org/c/asterisk/+/17532">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">frame: Fix for Doxygen.<br><br>ASTERISK-29755<br><br>Change-Id: I8240013ec3db0669c0acf67e26bf6c9cbb5b72af<br>---<br>M include/asterisk/audiohook.h<br>M include/asterisk/frame.h<br>M include/asterisk/framehook.h<br>M main/audiohook.c<br>4 files changed, 80 insertions(+), 161 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.asterisk.org:29418/asterisk refs/changes/32/17532/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/include/asterisk/audiohook.h b/include/asterisk/audiohook.h</span><br><span>index 1252e36..8e93d56 100644</span><br><span>--- a/include/asterisk/audiohook.h</span><br><span>+++ b/include/asterisk/audiohook.h</span><br><span>@@ -78,11 +78,12 @@</span><br><span> struct ast_audiohook;</span><br><span> </span><br><span> /*! \brief Callback function for manipulate audiohook type</span><br><span style="color: hsl(0, 100%, 40%);">- * \param audiohook Audiohook structure</span><br><span style="color: hsl(0, 100%, 40%);">- * \param chan Channel</span><br><span style="color: hsl(120, 100%, 40%);">+ * \param audiohook</span><br><span style="color: hsl(120, 100%, 40%);">+ * \param chan</span><br><span>  * \param frame Frame of audio to manipulate</span><br><span>  * \param direction Direction frame came from</span><br><span style="color: hsl(0, 100%, 40%);">- * \return Returns 0 on success, -1 on failure.</span><br><span style="color: hsl(120, 100%, 40%);">+ * \retval 0 on success</span><br><span style="color: hsl(120, 100%, 40%);">+ * \retval -1 on failure</span><br><span>  * \note An audiohook does not have any reference to a private data structure for manipulate</span><br><span>  *       types. It is up to the manipulate callback to store this data via it's own method.</span><br><span>  *       An example would be datastores.</span><br><span>@@ -116,64 +117,69 @@</span><br><span>   struct ast_trans_pvt *trans_pvt;                       /*!< Translation path for reading frames */</span><br><span>        ast_audiohook_manipulate_callback manipulate_callback; /*!< Manipulation callback */</span><br><span>      struct ast_audiohook_options options;                  /*!< Applicable options */</span><br><span style="color: hsl(0, 100%, 40%);">-    unsigned int hook_internal_samp_rate;                           /*!< internal read/write sample rate on the audiohook.*/</span><br><span style="color: hsl(120, 100%, 40%);">+   unsigned int hook_internal_samp_rate;                  /*!< internal read/write sample rate on the audiohook.*/</span><br><span>   AST_LIST_ENTRY(ast_audiohook) list;                    /*!< Linked list information */</span><br><span> };</span><br><span> </span><br><span> struct ast_audiohook_list;</span><br><span> </span><br><span> /*! \brief Initialize an audiohook structure</span><br><span style="color: hsl(0, 100%, 40%);">- * \param audiohook Audiohook structure</span><br><span style="color: hsl(120, 100%, 40%);">+ * \param audiohook</span><br><span>  * \param type Type of audiohook to initialize this as</span><br><span>  * \param source Who is initializing this audiohook</span><br><span style="color: hsl(0, 100%, 40%);">- * \param init flags</span><br><span style="color: hsl(0, 100%, 40%);">- * \return Returns 0 on success, -1 on failure</span><br><span style="color: hsl(120, 100%, 40%);">+ * \param flags</span><br><span style="color: hsl(120, 100%, 40%);">+ * \retval 0 on success</span><br><span style="color: hsl(120, 100%, 40%);">+ * \retval -1 on failure</span><br><span>  */</span><br><span> int ast_audiohook_init(struct ast_audiohook *audiohook, enum ast_audiohook_type type, const char *source, enum ast_audiohook_init_flags flags);</span><br><span> </span><br><span> /*! \brief Destroys an audiohook structure</span><br><span style="color: hsl(0, 100%, 40%);">- * \param audiohook Audiohook structure</span><br><span style="color: hsl(0, 100%, 40%);">- * \return Returns 0 on success, -1 on failure</span><br><span style="color: hsl(120, 100%, 40%);">+ * \param audiohook</span><br><span style="color: hsl(120, 100%, 40%);">+ * \retval 0 on success</span><br><span style="color: hsl(120, 100%, 40%);">+ * \retval -1 on failure</span><br><span>  */</span><br><span> int ast_audiohook_destroy(struct ast_audiohook *audiohook);</span><br><span> </span><br><span> /*! \brief Writes a frame into the audiohook structure</span><br><span style="color: hsl(0, 100%, 40%);">- * \param audiohook Audiohook structure</span><br><span style="color: hsl(120, 100%, 40%);">+ * \param audiohook</span><br><span>  * \param direction Direction the audio frame came from</span><br><span>  * \param frame Frame to write in</span><br><span style="color: hsl(0, 100%, 40%);">- * \return Returns 0 on success, -1 on failure</span><br><span style="color: hsl(120, 100%, 40%);">+ * \retval 0 on success</span><br><span style="color: hsl(120, 100%, 40%);">+ * \retval -1 on failure</span><br><span>  */</span><br><span> int ast_audiohook_write_frame(struct ast_audiohook *audiohook, enum ast_audiohook_direction direction, struct ast_frame *frame);</span><br><span> </span><br><span> /*! \brief Reads a frame in from the audiohook structure</span><br><span style="color: hsl(0, 100%, 40%);">- * \param audiohook Audiohook structure</span><br><span style="color: hsl(120, 100%, 40%);">+ * \param audiohook</span><br><span>  * \param samples Number of samples wanted</span><br><span>  * \param direction Direction the audio frame came from</span><br><span>  * \param format Format of frame remote side wants back</span><br><span style="color: hsl(0, 100%, 40%);">- * \return Returns frame on success, NULL on failure</span><br><span style="color: hsl(120, 100%, 40%);">+ * \return frame on success</span><br><span style="color: hsl(120, 100%, 40%);">+ * \retval NULL on failure</span><br><span>  */</span><br><span> struct ast_frame *ast_audiohook_read_frame(struct ast_audiohook *audiohook, size_t samples, enum ast_audiohook_direction direction, struct ast_format *format);</span><br><span> </span><br><span> /*! \brief Reads a frame in from the audiohook structure in mixed audio mode and copies read and write frame data to provided arguments.</span><br><span style="color: hsl(0, 100%, 40%);">- * \param audiohook Audiohook structure</span><br><span style="color: hsl(120, 100%, 40%);">+ * \param audiohook</span><br><span>  * \param samples Number of samples wanted</span><br><span style="color: hsl(0, 100%, 40%);">- * \param ast_format Format of frame remote side wants back</span><br><span style="color: hsl(120, 100%, 40%);">+ * \param format Format of frame remote side wants back</span><br><span>  * \param read_frame if available, we'll copy the read buffer to this.</span><br><span>  * \param write_frame if available, we'll copy the write buffer to this.</span><br><span style="color: hsl(0, 100%, 40%);">- * \param direction</span><br><span style="color: hsl(0, 100%, 40%);">- * \return Returns frame on success, NULL on failure</span><br><span style="color: hsl(120, 100%, 40%);">+ * \return frame on success</span><br><span style="color: hsl(120, 100%, 40%);">+ * \retval NULL on failure</span><br><span>  */</span><br><span> struct ast_frame *ast_audiohook_read_frame_all(struct ast_audiohook *audiohook, size_t samples, struct ast_format *format, struct ast_frame **read_frame, struct ast_frame **write_frame);</span><br><span> </span><br><span> /*! \brief Attach audiohook to channel</span><br><span style="color: hsl(0, 100%, 40%);">- * \param chan Channel</span><br><span style="color: hsl(0, 100%, 40%);">- * \param audiohook Audiohook structure</span><br><span style="color: hsl(0, 100%, 40%);">- * \return Returns 0 on success, -1 on failure</span><br><span style="color: hsl(120, 100%, 40%);">+ * \param chan</span><br><span style="color: hsl(120, 100%, 40%);">+ * \param audiohook</span><br><span style="color: hsl(120, 100%, 40%);">+ * \return 0 on success</span><br><span style="color: hsl(120, 100%, 40%);">+ * \retval -1 on failure</span><br><span>  */</span><br><span> int ast_audiohook_attach(struct ast_channel *chan, struct ast_audiohook *audiohook);</span><br><span> </span><br><span> /*! \brief Detach audiohook from channel</span><br><span style="color: hsl(0, 100%, 40%);">- * \param audiohook Audiohook structure</span><br><span style="color: hsl(120, 100%, 40%);">+ * \param audiohook</span><br><span>  * \return Returns 0 on success, -1 on failure</span><br><span>  */</span><br><span> int ast_audiohook_detach(struct ast_audiohook *audiohook);</span><br><span>@@ -181,7 +187,6 @@</span><br><span> /*!</span><br><span>  * \brief Detach audiohooks from list and destroy said list</span><br><span>  * \param audiohook_list List of audiohooks (NULL tolerant)</span><br><span style="color: hsl(0, 100%, 40%);">- * \return Nothing</span><br><span>  */</span><br><span> void ast_audiohook_detach_list(struct ast_audiohook_list *audiohook_list);</span><br><span> </span><br><span>@@ -217,7 +222,8 @@</span><br><span>  * \param chan Channel to detach from</span><br><span>  * \param source Name of source to detach</span><br><span>  *</span><br><span style="color: hsl(0, 100%, 40%);">- * \return Returns 0 on success, -1 on failure</span><br><span style="color: hsl(120, 100%, 40%);">+ * \retval 0 on success</span><br><span style="color: hsl(120, 100%, 40%);">+ * \retval -1 on failure</span><br><span>  *</span><br><span>  * \note The channel does not need to be locked before calling this function.</span><br><span>  */</span><br><span>@@ -229,7 +235,8 @@</span><br><span>  * \param chan Channel to remove from</span><br><span>  * \param audiohook Audiohook to remove</span><br><span>  *</span><br><span style="color: hsl(0, 100%, 40%);">- * \return Returns 0 on success, -1 on failure</span><br><span style="color: hsl(120, 100%, 40%);">+ * \retval 0 on success</span><br><span style="color: hsl(120, 100%, 40%);">+ * \retval -1 on failure</span><br><span>  *</span><br><span>  * \note The channel does not need to be locked before calling this function</span><br><span>  */</span><br><span>@@ -238,9 +245,10 @@</span><br><span> /*!</span><br><span>  * \brief Determine if a audiohook_list is empty or not.</span><br><span>  *</span><br><span style="color: hsl(0, 100%, 40%);">- * \param audiohook Audiohook to check.  (NULL also means empty)</span><br><span style="color: hsl(120, 100%, 40%);">+ * \param audiohook_list Audiohook to check.  (NULL also means empty)</span><br><span>  *</span><br><span style="color: hsl(0, 100%, 40%);">- * retval 0 false, 1 true</span><br><span style="color: hsl(120, 100%, 40%);">+ * \retval 0 false</span><br><span style="color: hsl(120, 100%, 40%);">+ * \retval 1 true</span><br><span>  */</span><br><span> int ast_audiohook_write_list_empty(struct ast_audiohook_list *audiohook_list);</span><br><span> </span><br><span>@@ -249,13 +257,14 @@</span><br><span>  * \param audiohook_list List of audiohooks</span><br><span>  * \param direction Direction frame is coming in from</span><br><span>  * \param frame The frame itself</span><br><span style="color: hsl(0, 100%, 40%);">- * \return Return frame on success, NULL on failure</span><br><span style="color: hsl(120, 100%, 40%);">+ * \return frame on success</span><br><span style="color: hsl(120, 100%, 40%);">+ * \retval NULL on failure</span><br><span>  */</span><br><span> struct ast_frame *ast_audiohook_write_list(struct ast_channel *chan, struct ast_audiohook_list *audiohook_list, enum ast_audiohook_direction direction, struct ast_frame *frame);</span><br><span> </span><br><span> /*! \brief Update audiohook's status</span><br><span style="color: hsl(0, 100%, 40%);">- * \param audiohook Audiohook structure</span><br><span style="color: hsl(0, 100%, 40%);">- * \param audiohook status enum</span><br><span style="color: hsl(120, 100%, 40%);">+ * \param audiohook</span><br><span style="color: hsl(120, 100%, 40%);">+ * \param status</span><br><span>  *</span><br><span>  * \note once status is updated to DONE, this function can not be used to set the</span><br><span>  * status back to any other setting.  Setting DONE effectively locks the status as such.</span><br><span>@@ -272,7 +281,7 @@</span><br><span>   \param chan The channel on which to find the spies</span><br><span>   \param source The audiohook's source</span><br><span>   \param type The type of audiohook</span><br><span style="color: hsl(0, 100%, 40%);">-  \return Return the number of audiohooks which are from the source specified</span><br><span style="color: hsl(120, 100%, 40%);">+  \return number of audiohooks which are from the source specified</span><br><span> </span><br><span>   Note: Function performs nlocking.</span><br><span> */</span><br><span>@@ -283,7 +292,7 @@</span><br><span>   \param chan The channel on which to find the spies</span><br><span>   \param source The source of the audiohook</span><br><span>   \param type The type of spy to look for</span><br><span style="color: hsl(0, 100%, 40%);">-  \return Return the number of running audiohooks which are from the source specified</span><br><span style="color: hsl(120, 100%, 40%);">+  \return number of running audiohooks which are from the source specified</span><br><span> </span><br><span>   Note: Function performs no locking.</span><br><span> */</span><br><span>@@ -304,7 +313,8 @@</span><br><span>  * \param chan Channel to muck with</span><br><span>  * \param direction Direction to set on</span><br><span>  * \param volume Value to adjust the volume by</span><br><span style="color: hsl(0, 100%, 40%);">- * \return Returns 0 on success, -1 on failure</span><br><span style="color: hsl(120, 100%, 40%);">+ * \retval 0 on success</span><br><span style="color: hsl(120, 100%, 40%);">+ * \retval -1 on failure</span><br><span>  * \since 1.6.1</span><br><span>  */</span><br><span> int ast_audiohook_volume_set(struct ast_channel *chan, enum ast_audiohook_direction direction, int volume);</span><br><span>@@ -313,7 +323,7 @@</span><br><span>  * \brief Retrieve the volume adjustment value on frames read from or written to a channel</span><br><span>  * \param chan Channel to retrieve volume adjustment from</span><br><span>  * \param direction Direction to retrieve</span><br><span style="color: hsl(0, 100%, 40%);">- * \return Returns adjustment value</span><br><span style="color: hsl(120, 100%, 40%);">+ * \return adjustment value</span><br><span>  * \since 1.6.1</span><br><span>  */</span><br><span> int ast_audiohook_volume_get(struct ast_channel *chan, enum ast_audiohook_direction direction);</span><br><span>@@ -323,7 +333,8 @@</span><br><span>  * \param chan Channel to muck with</span><br><span>  * \param direction Direction to increase</span><br><span>  * \param volume Value to adjust the adjustment by</span><br><span style="color: hsl(0, 100%, 40%);">- * \return Returns 0 on success, -1 on failure</span><br><span style="color: hsl(120, 100%, 40%);">+ * \retval 0 on success</span><br><span style="color: hsl(120, 100%, 40%);">+ * \retval -1 on failure</span><br><span>  * \since 1.6.1</span><br><span>  */</span><br><span> int ast_audiohook_volume_adjust(struct ast_channel *chan, enum ast_audiohook_direction direction, int volume);</span><br><span>diff --git a/include/asterisk/frame.h b/include/asterisk/frame.h</span><br><span>index c518b0c..fc33771 100644</span><br><span>--- a/include/asterisk/frame.h</span><br><span>+++ b/include/asterisk/frame.h</span><br><span>@@ -531,23 +531,23 @@</span><br><span>          uint8_t data[0];</span><br><span> };</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+#if 0 /* Unimplemented */</span><br><span> /*! \brief  Requests a frame to be allocated</span><br><span>  *</span><br><span style="color: hsl(0, 100%, 40%);">- * \param source</span><br><span style="color: hsl(120, 100%, 40%);">+ * \param source, len</span><br><span>  * Request a frame be allocated.  source is an optional source of the frame,</span><br><span>  * len is the requested length, or "0" if the caller will supply the buffer</span><br><span>  */</span><br><span style="color: hsl(0, 100%, 40%);">-#if 0 /* Unimplemented */</span><br><span> struct ast_frame *ast_fralloc(char *source, int len);</span><br><span> #endif</span><br><span> </span><br><span> /*!</span><br><span>  * \brief Frees a frame or list of frames</span><br><span>  *</span><br><span style="color: hsl(0, 100%, 40%);">- * \param fr Frame to free, or head of list to free</span><br><span style="color: hsl(120, 100%, 40%);">+ * \param frame Frame to free, or head of list to free</span><br><span>  * \param cache Whether to consider this frame for frame caching</span><br><span>  */</span><br><span style="color: hsl(0, 100%, 40%);">-void ast_frame_free(struct ast_frame *fr, int cache);</span><br><span style="color: hsl(120, 100%, 40%);">+void ast_frame_free(struct ast_frame *frame, int cache);</span><br><span> </span><br><span> #define ast_frfree(fr) ast_frame_free(fr, 1)</span><br><span> </span><br><span>diff --git a/include/asterisk/framehook.h b/include/asterisk/framehook.h</span><br><span>index 7cf731d..2afa002 100644</span><br><span>--- a/include/asterisk/framehook.h</span><br><span>+++ b/include/asterisk/framehook.h</span><br><span>@@ -174,12 +174,12 @@</span><br><span>  * The ast_channel will always be locked during this callback. Never attempt to unlock the</span><br><span>  * channel for any reason.</span><br><span>  *</span><br><span style="color: hsl(0, 100%, 40%);">- * \param channel, The ast_channel this framehook is attached to</span><br><span style="color: hsl(0, 100%, 40%);">- * \param frame, The ast_frame being intercepted for viewing and manipulation</span><br><span style="color: hsl(0, 100%, 40%);">- * \param event, The type of event which is occurring</span><br><span style="color: hsl(0, 100%, 40%);">- * \param data, The data pointer provided at framehook initialization.</span><br><span style="color: hsl(120, 100%, 40%);">+ * \param chan The ast_channel this framehook is attached to</span><br><span style="color: hsl(120, 100%, 40%);">+ * \param frame The ast_frame being intercepted for viewing and manipulation</span><br><span style="color: hsl(120, 100%, 40%);">+ * \param event The type of event which is occurring</span><br><span style="color: hsl(120, 100%, 40%);">+ * \param data The data pointer provided at framehook initialization.</span><br><span>  *</span><br><span style="color: hsl(0, 100%, 40%);">- * \retval the resulting frame.</span><br><span style="color: hsl(120, 100%, 40%);">+ * \return the resulting frame.</span><br><span>  */</span><br><span> typedef struct ast_frame *(*ast_framehook_event_callback)(</span><br><span>         struct ast_channel *chan,</span><br><span>@@ -193,7 +193,7 @@</span><br><span>  * \note  This function should be used to clean up any pointers pointing to the</span><br><span>  * framehook structure as the framehook will be freed immediately afterwards.</span><br><span>  *</span><br><span style="color: hsl(0, 100%, 40%);">- * \param data, The data pointer provided at framehook initialization. This</span><br><span style="color: hsl(120, 100%, 40%);">+ * \param data The data pointer provided at framehook initialization. This</span><br><span>  * is a good place to clean up any state data allocated for the framehook stored in this</span><br><span>  * pointer.</span><br><span>  */</span><br><span>@@ -204,8 +204,8 @@</span><br><span>  * frames of a given type</span><br><span>  * \since 12</span><br><span>  *</span><br><span style="color: hsl(0, 100%, 40%);">- * \param data, The data pointer provided at framehook initialization.</span><br><span style="color: hsl(0, 100%, 40%);">- * \param type, The type of frame.</span><br><span style="color: hsl(120, 100%, 40%);">+ * \param data The data pointer provided at framehook initialization.</span><br><span style="color: hsl(120, 100%, 40%);">+ * \param type The type of frame.</span><br><span>  *</span><br><span>  * \return 0 if frame type is being ignored</span><br><span>  * \return 1 if frame type is not being ignored</span><br><span>@@ -216,10 +216,10 @@</span><br><span>  * \brief This callback is called when a masquerade occurs on a channel with a framehook</span><br><span>  * \since 12</span><br><span>  *</span><br><span style="color: hsl(0, 100%, 40%);">- * \param data, The data pointer provided at framehook initialization.</span><br><span style="color: hsl(0, 100%, 40%);">- * \param framehook_id, The framehook ID where the framehook lives now</span><br><span style="color: hsl(0, 100%, 40%);">- * \param old_chan, The channel that was masqueraded.</span><br><span style="color: hsl(0, 100%, 40%);">- * \param new_chan, The channel that the masqueraded channel became.</span><br><span style="color: hsl(120, 100%, 40%);">+ * \param data The data pointer provided at framehook initialization.</span><br><span style="color: hsl(120, 100%, 40%);">+ * \param framehook_id The framehook ID where the framehook lives now</span><br><span style="color: hsl(120, 100%, 40%);">+ * \param old_chan The channel that was masqueraded.</span><br><span style="color: hsl(120, 100%, 40%);">+ * \param new_chan The channel that the masqueraded channel became.</span><br><span>  */</span><br><span> typedef void (*ast_framehook_chan_fixup_callback)(void *data, int framehook_id,</span><br><span>      struct ast_channel *old_chan, struct ast_channel *new_chan);</span><br><span>@@ -268,8 +268,8 @@</span><br><span>  * provide it during the event and destruction callbacks.  It is entirely up to the</span><br><span>  * application using this API to manage the memory associated with the data pointer.</span><br><span>  *</span><br><span style="color: hsl(0, 100%, 40%);">- * \retval On success, non-negative id representing this hook on the channel</span><br><span style="color: hsl(0, 100%, 40%);">- * \retval On failure, -1</span><br><span style="color: hsl(120, 100%, 40%);">+ * \retval non-negative success, id representing this hook on the channel</span><br><span style="color: hsl(120, 100%, 40%);">+ * \retval -1 failure</span><br><span>  */</span><br><span> int ast_framehook_attach(struct ast_channel *chan, struct ast_framehook_interface *i);</span><br><span> </span><br><span>@@ -356,8 +356,8 @@</span><br><span>  * \pre The Channel must be locked during this function call.</span><br><span>  *</span><br><span>  * \param framehooks the framehook list</span><br><span style="color: hsl(0, 100%, 40%);">- * \retval 0, not empty</span><br><span style="color: hsl(0, 100%, 40%);">- * \retval 1, is empty</span><br><span style="color: hsl(120, 100%, 40%);">+ * \retval 0 not empty</span><br><span style="color: hsl(120, 100%, 40%);">+ * \retval 1 is empty</span><br><span>  */</span><br><span> int ast_framehook_list_is_empty(struct ast_framehook_list *framehooks);</span><br><span> </span><br><span>@@ -367,8 +367,8 @@</span><br><span>  * \pre The channel must be locked during this function call.</span><br><span>  *</span><br><span>  * \param framehooks the framehook list</span><br><span style="color: hsl(0, 100%, 40%);">- * \retval 0, not empty</span><br><span style="color: hsl(0, 100%, 40%);">- * \retval 1, is empty (aside from dying framehooks)</span><br><span style="color: hsl(120, 100%, 40%);">+ * \retval 0 not empty</span><br><span style="color: hsl(120, 100%, 40%);">+ * \retval 1 is empty (aside from dying framehooks)</span><br><span>  *</span><br><span>  * \note This function is very similar to ast_framehook_list_is_empty, but it checks individual</span><br><span>  *       framehooks to see if they have been marked for destruction and doesn't count them if they are.</span><br><span>@@ -381,8 +381,9 @@</span><br><span>  * \pre The channel must be locked during this function call.</span><br><span>  *</span><br><span>  * \param framehooks the framehook list</span><br><span style="color: hsl(0, 100%, 40%);">- * \retval 0, not empty</span><br><span style="color: hsl(0, 100%, 40%);">- * \retval 1, is empty (aside from dying framehooks)</span><br><span style="color: hsl(120, 100%, 40%);">+ * \param type type of frame</span><br><span style="color: hsl(120, 100%, 40%);">+ * \retval 0 not empty</span><br><span style="color: hsl(120, 100%, 40%);">+ * \retval 1 is empty (aside from dying framehooks)</span><br><span>  *</span><br><span>  * \note This function is very similar to ast_framehook_list_is_empty, but it checks individual</span><br><span>  *       framehooks to see if they have been marked for destruction and doesn't count them if they are.</span><br><span>diff --git a/main/audiohook.c b/main/audiohook.c</span><br><span>index fc901aa..2278e5e 100644</span><br><span>--- a/main/audiohook.c</span><br><span>+++ b/main/audiohook.c</span><br><span>@@ -97,14 +97,6 @@</span><br><span>        return 0;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-/*! \brief Initialize an audiohook structure</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * \param audiohook Audiohook structure</span><br><span style="color: hsl(0, 100%, 40%);">- * \param type</span><br><span style="color: hsl(0, 100%, 40%);">- * \param source, init_flags</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * \return Returns 0 on success, -1 on failure</span><br><span style="color: hsl(0, 100%, 40%);">- */</span><br><span> int ast_audiohook_init(struct ast_audiohook *audiohook, enum ast_audiohook_type type, const char *source, enum ast_audiohook_init_flags init_flags)</span><br><span> {</span><br><span>     /* Need to keep the type and source */</span><br><span>@@ -126,10 +118,6 @@</span><br><span>        return 0;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-/*! \brief Destroys an audiohook structure</span><br><span style="color: hsl(0, 100%, 40%);">- * \param audiohook Audiohook structure</span><br><span style="color: hsl(0, 100%, 40%);">- * \return Returns 0 on success, -1 on failure</span><br><span style="color: hsl(0, 100%, 40%);">- */</span><br><span> int ast_audiohook_destroy(struct ast_audiohook *audiohook)</span><br><span> {</span><br><span>      /* Drop the factories used by this audiohook type */</span><br><span>@@ -161,12 +149,6 @@</span><br><span>  (ast_test_flag(hook, AST_AUDIOHOOK_MUTE_WRITE) && (dir == AST_AUDIOHOOK_DIRECTION_WRITE)) || \</span><br><span>       (ast_test_flag(hook, AST_AUDIOHOOK_MUTE_READ | AST_AUDIOHOOK_MUTE_WRITE) == (AST_AUDIOHOOK_MUTE_READ | AST_AUDIOHOOK_MUTE_WRITE)))</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-/*! \brief Writes a frame into the audiohook structure</span><br><span style="color: hsl(0, 100%, 40%);">- * \param audiohook Audiohook structure</span><br><span style="color: hsl(0, 100%, 40%);">- * \param direction Direction the audio frame came from</span><br><span style="color: hsl(0, 100%, 40%);">- * \param frame Frame to write in</span><br><span style="color: hsl(0, 100%, 40%);">- * \return Returns 0 on success, -1 on failure</span><br><span style="color: hsl(0, 100%, 40%);">- */</span><br><span> int ast_audiohook_write_frame(struct ast_audiohook *audiohook, enum ast_audiohook_direction direction, struct ast_frame *frame)</span><br><span> {</span><br><span>         struct ast_slinfactory *factory = (direction == AST_AUDIOHOOK_DIRECTION_READ ? &audiohook->read_factory : &audiohook->write_factory);</span><br><span>@@ -439,27 +421,11 @@</span><br><span>  return final_frame;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-/*! \brief Reads a frame in from the audiohook structure</span><br><span style="color: hsl(0, 100%, 40%);">- * \param audiohook Audiohook structure</span><br><span style="color: hsl(0, 100%, 40%);">- * \param samples Number of samples wanted in requested output format</span><br><span style="color: hsl(0, 100%, 40%);">- * \param direction Direction the audio frame came from</span><br><span style="color: hsl(0, 100%, 40%);">- * \param format Format of frame remote side wants back</span><br><span style="color: hsl(0, 100%, 40%);">- * \return Returns frame on success, NULL on failure</span><br><span style="color: hsl(0, 100%, 40%);">- */</span><br><span> struct ast_frame *ast_audiohook_read_frame(struct ast_audiohook *audiohook, size_t samples, enum ast_audiohook_direction direction, struct ast_format *format)</span><br><span> {</span><br><span>         return audiohook_read_frame_helper(audiohook, samples, direction, format, NULL, NULL);</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-/*! \brief Reads a frame in from the audiohook structure</span><br><span style="color: hsl(0, 100%, 40%);">- * \param audiohook Audiohook structure</span><br><span style="color: hsl(0, 100%, 40%);">- * \param samples Number of samples wanted</span><br><span style="color: hsl(0, 100%, 40%);">- * \param direction Direction the audio frame came from</span><br><span style="color: hsl(0, 100%, 40%);">- * \param format Format of frame remote side wants back</span><br><span style="color: hsl(0, 100%, 40%);">- * \param read_frame frame pointer for copying read frame data</span><br><span style="color: hsl(0, 100%, 40%);">- * \param write_frame frame pointer for copying write frame data</span><br><span style="color: hsl(0, 100%, 40%);">- * \return Returns frame on success, NULL on failure</span><br><span style="color: hsl(0, 100%, 40%);">- */</span><br><span> struct ast_frame *ast_audiohook_read_frame_all(struct ast_audiohook *audiohook, size_t samples, struct ast_format *format, struct ast_frame **read_frame, struct ast_frame **write_frame)</span><br><span> {</span><br><span>        return audiohook_read_frame_helper(audiohook, samples, AST_AUDIOHOOK_DIRECTION_BOTH, format, read_frame, write_frame);</span><br><span>@@ -493,11 +459,6 @@</span><br><span>        }</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-/*! \brief Attach audiohook to channel</span><br><span style="color: hsl(0, 100%, 40%);">- * \param chan Channel</span><br><span style="color: hsl(0, 100%, 40%);">- * \param audiohook Audiohook structure</span><br><span style="color: hsl(0, 100%, 40%);">- * \return Returns 0 on success, -1 on failure</span><br><span style="color: hsl(0, 100%, 40%);">- */</span><br><span> int ast_audiohook_attach(struct ast_channel *chan, struct ast_audiohook *audiohook)</span><br><span> {</span><br><span>   ast_channel_lock(chan);</span><br><span>@@ -554,14 +515,6 @@</span><br><span>       return 0;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-/*! \brief Update audiohook's status</span><br><span style="color: hsl(0, 100%, 40%);">- * \param audiohook Audiohook structure</span><br><span style="color: hsl(0, 100%, 40%);">- * \param status Audiohook status enum</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * \note once status is updated to DONE, this function can not be used to set the</span><br><span style="color: hsl(0, 100%, 40%);">- * status back to any other setting.  Setting DONE effectively locks the status as such.</span><br><span style="color: hsl(0, 100%, 40%);">- */</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span> void ast_audiohook_update_status(struct ast_audiohook *audiohook, enum ast_audiohook_status status)</span><br><span> {</span><br><span>    ast_audiohook_lock(audiohook);</span><br><span>@@ -572,10 +525,6 @@</span><br><span>        ast_audiohook_unlock(audiohook);</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-/*! \brief Detach audiohook from channel</span><br><span style="color: hsl(0, 100%, 40%);">- * \param audiohook Audiohook structure</span><br><span style="color: hsl(0, 100%, 40%);">- * \return Returns 0 on success, -1 on failure</span><br><span style="color: hsl(0, 100%, 40%);">- */</span><br><span> int ast_audiohook_detach(struct ast_audiohook *audiohook)</span><br><span> {</span><br><span>  if (audiohook->status == AST_AUDIOHOOK_STATUS_NEW || audiohook->status == AST_AUDIOHOOK_STATUS_DONE) {</span><br><span>@@ -635,7 +584,8 @@</span><br><span> /*! \brief find an audiohook based on its source</span><br><span>  * \param audiohook_list The list of audiohooks to search in</span><br><span>  * \param source The source of the audiohook we wish to find</span><br><span style="color: hsl(0, 100%, 40%);">- * \return Return the corresponding audiohook or NULL if it cannot be found.</span><br><span style="color: hsl(120, 100%, 40%);">+ * \return corresponding audiohook</span><br><span style="color: hsl(120, 100%, 40%);">+ * \retval NULL if it cannot be found</span><br><span>  */</span><br><span> static struct ast_audiohook *find_audiohook_by_source(struct ast_audiohook_list *audiohook_list, const char *source)</span><br><span> {</span><br><span>@@ -723,11 +673,6 @@</span><br><span>     AST_LIST_TRAVERSE_SAFE_END;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-/*! \brief Detach specified source audiohook from channel</span><br><span style="color: hsl(0, 100%, 40%);">- * \param chan Channel to detach from</span><br><span style="color: hsl(0, 100%, 40%);">- * \param source Name of source to detach</span><br><span style="color: hsl(0, 100%, 40%);">- * \return Returns 0 on success, -1 on failure</span><br><span style="color: hsl(0, 100%, 40%);">- */</span><br><span> int ast_audiohook_detach_source(struct ast_channel *chan, const char *source)</span><br><span> {</span><br><span>   struct ast_audiohook *audiohook = NULL;</span><br><span>@@ -751,16 +696,6 @@</span><br><span>       return (audiohook ? 0 : -1);</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-/*!</span><br><span style="color: hsl(0, 100%, 40%);">- * \brief Remove an audiohook from a specified channel</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * \param chan Channel to remove from</span><br><span style="color: hsl(0, 100%, 40%);">- * \param audiohook Audiohook to remove</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * \return Returns 0 on success, -1 on failure</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * \note The channel does not need to be locked before calling this function</span><br><span style="color: hsl(0, 100%, 40%);">- */</span><br><span> int ast_audiohook_remove(struct ast_channel *chan, struct ast_audiohook *audiohook)</span><br><span> {</span><br><span>    ast_channel_lock(chan);</span><br><span>@@ -795,7 +730,8 @@</span><br><span>  * \param audiohook_list List of audiohooks</span><br><span>  * \param direction Direction frame is coming in from</span><br><span>  * \param frame The frame itself</span><br><span style="color: hsl(0, 100%, 40%);">- * \return Return frame on success, NULL on failure</span><br><span style="color: hsl(120, 100%, 40%);">+ * \return frame on success</span><br><span style="color: hsl(120, 100%, 40%);">+ * \retval NULL on failure</span><br><span>  */</span><br><span> static struct ast_frame *dtmf_audiohook_write_list(struct ast_channel *chan, struct ast_audiohook_list *audiohook_list, enum ast_audiohook_direction direction, struct ast_frame *frame)</span><br><span> {</span><br><span>@@ -950,7 +886,8 @@</span><br><span>  * \param audiohook_list List of audiohooks</span><br><span>  * \param direction Direction frame is coming in from</span><br><span>  * \param frame The frame itself</span><br><span style="color: hsl(0, 100%, 40%);">- * \return Return frame on success, NULL on failure</span><br><span style="color: hsl(120, 100%, 40%);">+ * \return frame on success</span><br><span style="color: hsl(120, 100%, 40%);">+ * \retval NULL on failure</span><br><span>  */</span><br><span> static struct ast_frame *audio_audiohook_write_list(struct ast_channel *chan, struct ast_audiohook_list *audiohook_list, enum ast_audiohook_direction direction, struct ast_frame *frame)</span><br><span> {</span><br><span>@@ -1117,13 +1054,6 @@</span><br><span>                        && AST_LIST_EMPTY(&audiohook_list->manipulate_list));</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-/*! \brief Pass a frame off to be handled by the audiohook core</span><br><span style="color: hsl(0, 100%, 40%);">- * \param chan Channel that the list is coming off of</span><br><span style="color: hsl(0, 100%, 40%);">- * \param audiohook_list List of audiohooks</span><br><span style="color: hsl(0, 100%, 40%);">- * \param direction Direction frame is coming in from</span><br><span style="color: hsl(0, 100%, 40%);">- * \param frame The frame itself</span><br><span style="color: hsl(0, 100%, 40%);">- * \return Return frame on success, NULL on failure</span><br><span style="color: hsl(0, 100%, 40%);">- */</span><br><span> struct ast_frame *ast_audiohook_write_list(struct ast_channel *chan, struct ast_audiohook_list *audiohook_list, enum ast_audiohook_direction direction, struct ast_frame *frame)</span><br><span> {</span><br><span>     /* Pass off frame to it's respective list write function */</span><br><span>@@ -1236,7 +1166,6 @@</span><br><span> </span><br><span> /*! \brief Callback used to destroy the audiohook volume datastore</span><br><span>  * \param data Volume information structure</span><br><span style="color: hsl(0, 100%, 40%);">- * \return Returns nothing</span><br><span>  */</span><br><span> static void audiohook_volume_destroy(void *data)</span><br><span> {</span><br><span>@@ -1262,7 +1191,8 @@</span><br><span>  * \param chan Channel we are attached to</span><br><span>  * \param frame Frame of audio we want to manipulate</span><br><span>  * \param direction Direction the audio came in from</span><br><span style="color: hsl(0, 100%, 40%);">- * \return Returns 0 on success, -1 on failure</span><br><span style="color: hsl(120, 100%, 40%);">+ * \retval 0 on success</span><br><span style="color: hsl(120, 100%, 40%);">+ * \retval -1 on failure</span><br><span>  */</span><br><span> static int audiohook_volume_callback(struct ast_audiohook *audiohook, struct ast_channel *chan, struct ast_frame *frame, enum ast_audiohook_direction direction)</span><br><span> {</span><br><span>@@ -1300,7 +1230,8 @@</span><br><span> /*! \brief Helper function which finds and optionally creates an audiohook_volume_datastore datastore on a channel</span><br><span>  * \param chan Channel to look on</span><br><span>  * \param create Whether to create the datastore if not found</span><br><span style="color: hsl(0, 100%, 40%);">- * \return Returns audiohook_volume structure on success, NULL on failure</span><br><span style="color: hsl(120, 100%, 40%);">+ * \return audiohook_volume structure on success</span><br><span style="color: hsl(120, 100%, 40%);">+ * \retval NULL on failure</span><br><span>  */</span><br><span> static struct audiohook_volume *audiohook_volume_get(struct ast_channel *chan, int create)</span><br><span> {</span><br><span>@@ -1337,12 +1268,6 @@</span><br><span>       return audiohook_volume;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-/*! \brief Adjust the volume on frames read from or written to a channel</span><br><span style="color: hsl(0, 100%, 40%);">- * \param chan Channel to muck with</span><br><span style="color: hsl(0, 100%, 40%);">- * \param direction Direction to set on</span><br><span style="color: hsl(0, 100%, 40%);">- * \param volume Value to adjust the volume by</span><br><span style="color: hsl(0, 100%, 40%);">- * \return Returns 0 on success, -1 on failure</span><br><span style="color: hsl(0, 100%, 40%);">- */</span><br><span> int ast_audiohook_volume_set(struct ast_channel *chan, enum ast_audiohook_direction direction, int volume)</span><br><span> {</span><br><span>        struct audiohook_volume *audiohook_volume = NULL;</span><br><span>@@ -1363,11 +1288,6 @@</span><br><span>   return 0;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-/*! \brief Retrieve the volume adjustment value on frames read from or written to a channel</span><br><span style="color: hsl(0, 100%, 40%);">- * \param chan Channel to retrieve volume adjustment from</span><br><span style="color: hsl(0, 100%, 40%);">- * \param direction Direction to retrieve</span><br><span style="color: hsl(0, 100%, 40%);">- * \return Returns adjustment value</span><br><span style="color: hsl(0, 100%, 40%);">- */</span><br><span> int ast_audiohook_volume_get(struct ast_channel *chan, enum ast_audiohook_direction direction)</span><br><span> {</span><br><span>         struct audiohook_volume *audiohook_volume = NULL;</span><br><span>@@ -1388,12 +1308,6 @@</span><br><span>   return adjustment;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-/*! \brief Adjust the volume on frames read from or written to a channel</span><br><span style="color: hsl(0, 100%, 40%);">- * \param chan Channel to muck with</span><br><span style="color: hsl(0, 100%, 40%);">- * \param direction Direction to increase</span><br><span style="color: hsl(0, 100%, 40%);">- * \param volume Value to adjust the adjustment by</span><br><span style="color: hsl(0, 100%, 40%);">- * \return Returns 0 on success, -1 on failure</span><br><span style="color: hsl(0, 100%, 40%);">- */</span><br><span> int ast_audiohook_volume_adjust(struct ast_channel *chan, enum ast_audiohook_direction direction, int volume)</span><br><span> {</span><br><span>     struct audiohook_volume *audiohook_volume = NULL;</span><br><span>@@ -1414,13 +1328,6 @@</span><br><span>   return 0;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-/*! \brief Mute frames read from or written to a channel</span><br><span style="color: hsl(0, 100%, 40%);">- * \param chan Channel to muck with</span><br><span style="color: hsl(0, 100%, 40%);">- * \param source Type of audiohook</span><br><span style="color: hsl(0, 100%, 40%);">- * \param flag which flag to set / clear</span><br><span style="color: hsl(0, 100%, 40%);">- * \param clear set or clear</span><br><span style="color: hsl(0, 100%, 40%);">- * \return Returns 0 on success, -1 on failure</span><br><span style="color: hsl(0, 100%, 40%);">- */</span><br><span> int ast_audiohook_set_mute(struct ast_channel *chan, const char *source, enum ast_audiohook_flags flag, int clear)</span><br><span> {</span><br><span>      struct ast_audiohook *audiohook = NULL;</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.asterisk.org/c/asterisk/+/17532">change 17532</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.asterisk.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.asterisk.org/c/asterisk/+/17532"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: asterisk </div>
<div style="display:none"> Gerrit-Branch: 16 </div>
<div style="display:none"> Gerrit-Change-Id: I8240013ec3db0669c0acf67e26bf6c9cbb5b72af </div>
<div style="display:none"> Gerrit-Change-Number: 17532 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Alexander Traud <pabstraud@compuserve.com> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>