| 141 | } while (0) |
| 142 | |
| 143 | static int modplug_load_metadata(AVFormatContext *s) |
| 144 | { |
| 145 | ModPlugContext *modplug = s->priv_data; |
| 146 | ModPlugFile *f = modplug->f; |
| 147 | char *extra; |
| 148 | const char *name = ModPlug_GetName(f); |
| 149 | const char *msg = ModPlug_GetMessage(f); |
| 150 | |
| 151 | unsigned n_instruments = ModPlug_NumInstruments(f); |
| 152 | unsigned n_samples = ModPlug_NumSamples(f); |
| 153 | unsigned n_patterns = ModPlug_NumPatterns(f); |
| 154 | unsigned n_channels = ModPlug_NumChannels(f); |
| 155 | |
| 156 | if (name && *name) av_dict_set(&s->metadata, "name", name, 0); |
| 157 | if (msg && *msg) av_dict_set(&s->metadata, "message", msg, 0); |
| 158 | |
| 159 | extra = av_asprintf("%u pattern%s, %u channel%s", |
| 160 | n_patterns, n_patterns > 1 ? "s" : "", |
| 161 | n_channels, n_channels > 1 ? "s" : ""); |
| 162 | if (!extra) |
| 163 | return AVERROR(ENOMEM); |
| 164 | av_dict_set(&s->metadata, "extra info", extra, AV_DICT_DONT_STRDUP_VAL); |
| 165 | |
| 166 | ADD_META_MULTIPLE_ENTRIES(instrument, ModPlug_InstrumentName); |
| 167 | ADD_META_MULTIPLE_ENTRIES(sample, ModPlug_SampleName); |
| 168 | |
| 169 | return 0; |
| 170 | } |
| 171 | |
| 172 | #define AUDIO_PKT_SIZE 512 |
| 173 |
no test coverage detected