Merged revisions 224931 via svnmerge from

https://origsvn.digium.com/svn/asterisk/branches/1.4

........
  r224931 | russell | 2009-10-20 21:59:54 -0500 (Tue, 20 Oct 2009) | 5 lines
  
  Isolate frames returned from a DSP instance or codec translator.
  
  The reasoning for these changes are the same as what I wrote in the commit
  message for rev 222878.
........


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@224932 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
Russell Bryant
2009-10-21 03:09:04 +00:00
parent c5b8e9af7c
commit cd10bd931a
7 changed files with 8 additions and 109 deletions

View File

@@ -157,16 +157,4 @@ int ast_dsp_reload(void);
*/
int ast_dsp_init(void);
/*!
* \brief Hint that a frame from a dsp was freed
*
* This is called from ast_frame_free if AST_FRFLAG_FROM_DSP is set. This occurs
* because it is possible for the dsp to be freed while someone still holds a reference
* to the frame that is in that dsp. This has been known to happen when the dsp on a DAHDI
* channel detects a busy signal. The channel is hung up, and the application that read the
* frame to begin with still has a reference to the frame.
*
* \return nothing
*/
void ast_dsp_frame_freed(struct ast_frame *fr);
#endif /* _ASTERISK_DSP_H */

View File

@@ -128,14 +128,6 @@ enum ast_frame_type {
enum {
/*! This frame contains valid timing information */
AST_FRFLAG_HAS_TIMING_INFO = (1 << 0),
/*! This frame came from a translator and is still the original frame.
* The translator can not be free'd if the frame inside of it still has
* this flag set. */
AST_FRFLAG_FROM_TRANSLATOR = (1 << 1),
/*! This frame came from a dsp and is still the original frame.
* The dsp cannot be free'd if the frame inside of it still has
* this flag set. */
AST_FRFLAG_FROM_DSP = (1 << 2),
};
/*! \brief Data structure associated with a single frame of data

View File

@@ -151,7 +151,6 @@ struct ast_trans_pvt {
struct ast_trans_pvt *next; /*!< next in translator chain */
struct timeval nextin;
struct timeval nextout;
unsigned int destroy:1;
};
/*! \brief generic frameout function */
@@ -257,20 +256,6 @@ unsigned int ast_translate_path_steps(unsigned int dest, unsigned int src);
*/
unsigned int ast_translate_available_formats(unsigned int dest, unsigned int src);
/*!
* \brief Hint that a frame from a translator has been freed
*
* This is sort of a hack. This function gets called when ast_frame_free() gets
* called on a frame that has the AST_FRFLAG_FROM_TRANSLATOR flag set. This is
* because it is possible for a translation path to be destroyed while a frame
* from a translator is still in use. Specifically, this happens if a masquerade
* happens after a call to ast_read() but before the frame is done being processed,
* since the frame processing is generally done without the channel lock held.
*
* \return nothing
*/
void ast_translate_frame_freed(struct ast_frame *fr);
#if defined(__cplusplus) || defined(c_plusplus)
}
#endif