Ejemplo n.º 1
0
        /// <summary>
        ///   Converts a FLAC stream decoder error status into a value from the
        ///   StreamDecoderErrors enumeration
        /// </summary>
        /// <param name="errorStatus">
        ///   FLAC stream decoder error status that will be converted
        /// </param>
        /// <returns>The equivalent entry in the StreamDecoderErrors enumeration</returns>
        private static StreamDecoderError streamDecoderErrorFromFlacStreamDecoderErrorStatus(
            UnsafeNativeMethods.FLAC__StreamDecoderErrorStatus errorStatus
            )
        {
            switch (errorStatus)
            {
            case UnsafeNativeMethods.FLAC__StreamDecoderErrorStatus.
                FLAC__STREAM_DECODER_ERROR_STATUS_BAD_HEADER: {
                return(StreamDecoderError.BadHeader);
            }

            case UnsafeNativeMethods.FLAC__StreamDecoderErrorStatus.
                FLAC__STREAM_DECODER_ERROR_STATUS_FRAME_CRC_MISMATCH: {
                return(StreamDecoderError.FrameCrcMismatch);
            }

            case UnsafeNativeMethods.FLAC__StreamDecoderErrorStatus.
                FLAC__STREAM_DECODER_ERROR_STATUS_LOST_SYNC: {
                return(StreamDecoderError.LostSync);
            }

            case UnsafeNativeMethods.FLAC__StreamDecoderErrorStatus.
                FLAC__STREAM_DECODER_ERROR_STATUS_UNPARSEABLE_STREAM: {
                return(StreamDecoderError.UnparseableStream);
            }

            default: {
                throw new ArgumentException("Invalid error status");
            }
            }
        }
Ejemplo n.º 2
0
 /// <summary>Responds to an error that has occured during decoding</summary>
 /// <param name="decoder">FLAC stream decoder issuing the error notification</param>
 /// <param name="status">Error that has been encountered by the decoder</param>
 /// <param name="client_data">Not used</param>
 private void errorCallback(
     IntPtr decoder,
     UnsafeNativeMethods.FLAC__StreamDecoderErrorStatus status,
     IntPtr client_data
     )
 {
     try {
         HandleError(streamDecoderErrorFromFlacStreamDecoderErrorStatus(status));
     }
     catch (Exception exception) {
         Trace.TraceError(
             "FLAC stream adapter received an exception from HandleError():\n{0}",
             exception
             );
     }
 }