| 27 | 27 | #include <stdlib.h> | 
  | 28 | 28 |  | 
  | 29 | 29 | static FLAC__StreamEncoder *flac_encoder; | 
  |  | 30 | static FLAC__StreamMetadata *flac_metadata; | 
  | 30 | 31 |  | 
  | 31 | 32 | static FLAC__StreamEncoderWriteStatus flac_write_cb(const FLAC__StreamEncoder *encoder, | 
  | 32 | 33 |     const FLAC__byte buffer[], size_t bytes, unsigned samples, unsigned current_frame, gpointer data) | 
  | ... | ... |  | 
  | 77 | 78 |         char * sval = tuple_get_str (tuple, field, NULL); | 
  | 78 | 79 |         temp = g_strdup_printf ("%s=%s", name, sval); | 
  | 79 | 80 |         str_unref (sval); | 
  |  | 81 |         break; | 
  | 80 | 82 |     default: | 
  | 81 | 83 |         return; | 
  | 82 | 84 |     } | 
  | ... | ... |  | 
  | 97 | 99 |  | 
  | 98 | 100 |     FLAC__stream_encoder_set_channels(flac_encoder, input.channels); | 
  | 99 | 101 |     FLAC__stream_encoder_set_sample_rate(flac_encoder, input.frequency); | 
  | 100 |  |     FLAC__stream_encoder_init_stream(flac_encoder, flac_write_cb, flac_seek_cb, flac_tell_cb, | 
  | 101 |  | 				     NULL, output_file); | 
  |  | 102 |     FLAC__stream_encoder_set_compression_level(flac_encoder, 8); | 
  | 102 | 103 |  | 
  | 103 | 104 |     if (tuple) | 
  | 104 | 105 |     { | 
  | 105 |  |         FLAC__StreamMetadata *meta; | 
  | 106 |  |         meta = FLAC__metadata_object_new(FLAC__METADATA_TYPE_VORBIS_COMMENT); | 
  |  | 106 |         flac_metadata = FLAC__metadata_object_new(FLAC__METADATA_TYPE_VORBIS_COMMENT); | 
  | 107 | 107 |  | 
  | 108 |  |         insert_vorbis_comment (meta, "title", tuple, FIELD_TITLE); | 
  | 109 |  |         insert_vorbis_comment (meta, "artist", tuple, FIELD_ARTIST); | 
  | 110 |  |         insert_vorbis_comment (meta, "album", tuple, FIELD_ALBUM); | 
  | 111 |  |         insert_vorbis_comment (meta, "genre", tuple, FIELD_GENRE); | 
  | 112 |  |         insert_vorbis_comment (meta, "comment", tuple, FIELD_COMMENT); | 
  | 113 |  |         insert_vorbis_comment (meta, "date", tuple, FIELD_DATE); | 
  | 114 |  |         insert_vorbis_comment (meta, "year", tuple, FIELD_YEAR); | 
  | 115 |  |         insert_vorbis_comment (meta, "tracknumber", tuple, FIELD_TRACK_NUMBER); | 
  |  | 108 |         insert_vorbis_comment (flac_metadata, "TITLE", tuple, FIELD_TITLE); | 
  |  | 109 |         insert_vorbis_comment (flac_metadata, "ARTIST", tuple, FIELD_ARTIST); | 
  |  | 110 |         insert_vorbis_comment (flac_metadata, "ALBUM", tuple, FIELD_ALBUM); | 
  |  | 111 |         insert_vorbis_comment (flac_metadata, "GENRE", tuple, FIELD_GENRE); | 
  |  | 112 |         insert_vorbis_comment (flac_metadata, "COMMENT", tuple, FIELD_COMMENT); | 
  |  | 113 |         insert_vorbis_comment (flac_metadata, "DATE", tuple, FIELD_DATE); | 
  |  | 114 |         insert_vorbis_comment (flac_metadata, "YEAR", tuple, FIELD_YEAR); | 
  |  | 115 |         insert_vorbis_comment (flac_metadata, "TRACKNUMBER", tuple, FIELD_TRACK_NUMBER); | 
  | 116 | 116 |  | 
  | 117 |  |         FLAC__stream_encoder_set_metadata(flac_encoder, &meta, 1); | 
  |  | 117 |         FLAC__stream_encoder_set_metadata(flac_encoder, &flac_metadata, 1); | 
  | 118 | 118 |     } | 
  | 119 | 119 |  | 
  |  | 120 |     FLAC__stream_encoder_init_stream(flac_encoder, flac_write_cb, flac_seek_cb, flac_tell_cb, | 
  |  | 121 | 				     NULL, output_file); | 
  |  | 122 |  | 
  | 120 | 123 |     return 1; | 
  | 121 | 124 | } | 
  | 122 | 125 |  | 
  | ... | ... |  | 
  | 170 | 173 |  | 
  | 171 | 174 | static void flac_close(void) | 
  | 172 | 175 | { | 
  | 173 |  |     FLAC__stream_encoder_finish(flac_encoder); | 
  | 174 |  |     FLAC__stream_encoder_delete(flac_encoder); | 
  |  | 176 |     if(flac_encoder) | 
  |  | 177 |     { | 
  |  | 178 |         FLAC__stream_encoder_finish(flac_encoder); | 
  |  | 179 |         FLAC__stream_encoder_delete(flac_encoder); | 
  |  | 180 |         flac_encoder = NULL; | 
  |  | 181 |     } | 
  |  | 182 |      | 
  |  | 183 |     if(flac_metadata) | 
  |  | 184 |     { | 
  |  | 185 |         FLAC__metadata_object_delete(flac_metadata); | 
  |  | 186 |         flac_metadata = NULL; | 
  |  | 187 |     } | 
  | 175 | 188 | } | 
  | 176 | 189 |  | 
  | 177 | 190 | static int flac_format_required (int fmt) |