output/recorder: move functions into the struct
This commit is contained in:
		@@ -66,6 +66,9 @@ struct RecorderOutput {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	bool Configure(const config_param ¶m, Error &error);
 | 
						bool Configure(const config_param ¶m, Error &error);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						bool Open(AudioFormat &audio_format, Error &error);
 | 
				
			||||||
 | 
						void Close();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	bool WriteToFile(const void *data, size_t length, Error &error);
 | 
						bool WriteToFile(const void *data, size_t length, Error &error);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/**
 | 
						/**
 | 
				
			||||||
@@ -176,56 +179,68 @@ RecorderOutput::EncoderToFile(Error &error)
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static bool
 | 
					inline bool
 | 
				
			||||||
recorder_output_open(AudioOutput *ao,
 | 
					RecorderOutput::Open(AudioFormat &audio_format, Error &error)
 | 
				
			||||||
		     AudioFormat &audio_format,
 | 
					 | 
				
			||||||
		     Error &error)
 | 
					 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	RecorderOutput *recorder = (RecorderOutput *)ao;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	/* create the output file */
 | 
						/* create the output file */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	recorder->fd = open_cloexec(recorder->path,
 | 
						fd = open_cloexec(path,
 | 
				
			||||||
				    O_CREAT|O_WRONLY|O_TRUNC|O_BINARY,
 | 
								  O_CREAT|O_WRONLY|O_TRUNC|O_BINARY,
 | 
				
			||||||
				    0666);
 | 
								  0666);
 | 
				
			||||||
	if (recorder->fd < 0) {
 | 
						if (fd < 0) {
 | 
				
			||||||
		error.FormatErrno("Failed to create '%s'", recorder->path);
 | 
							error.FormatErrno("Failed to create '%s'", path);
 | 
				
			||||||
		return false;
 | 
							return false;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* open the encoder */
 | 
						/* open the encoder */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (!encoder_open(recorder->encoder, audio_format, error)) {
 | 
						if (!encoder_open(encoder, audio_format, error)) {
 | 
				
			||||||
		close(recorder->fd);
 | 
							close(fd);
 | 
				
			||||||
		unlink(recorder->path);
 | 
							unlink(path);
 | 
				
			||||||
		return false;
 | 
							return false;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (!recorder->EncoderToFile(error)) {
 | 
						if (!EncoderToFile(error)) {
 | 
				
			||||||
		encoder_close(recorder->encoder);
 | 
							encoder_close(encoder);
 | 
				
			||||||
		close(recorder->fd);
 | 
							close(fd);
 | 
				
			||||||
		unlink(recorder->path);
 | 
							unlink(path);
 | 
				
			||||||
		return false;
 | 
							return false;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return true;
 | 
						return true;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void
 | 
					static bool
 | 
				
			||||||
recorder_output_close(AudioOutput *ao)
 | 
					recorder_output_open(AudioOutput *ao,
 | 
				
			||||||
 | 
							     AudioFormat &audio_format,
 | 
				
			||||||
 | 
							     Error &error)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	RecorderOutput *recorder = (RecorderOutput *)ao;
 | 
						RecorderOutput &recorder = *(RecorderOutput *)ao;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return recorder.Open(audio_format, error);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					inline void
 | 
				
			||||||
 | 
					RecorderOutput::Close()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
	/* flush the encoder and write the rest to the file */
 | 
						/* flush the encoder and write the rest to the file */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (encoder_end(recorder->encoder, IgnoreError()))
 | 
						if (encoder_end(encoder, IgnoreError()))
 | 
				
			||||||
		recorder->EncoderToFile(IgnoreError());
 | 
							EncoderToFile(IgnoreError());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* now really close everything */
 | 
						/* now really close everything */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	encoder_close(recorder->encoder);
 | 
						encoder_close(encoder);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	close(recorder->fd);
 | 
						close(fd);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static void
 | 
				
			||||||
 | 
					recorder_output_close(AudioOutput *ao)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						RecorderOutput &recorder = *(RecorderOutput *)ao;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						recorder.Close();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static size_t
 | 
					static size_t
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user