Hi all, recently I tried to add cover art to flac files and have dfficulties in doing so. FLAC__Metadata_Chain *chain = FLAC__metadata_chain_new(); if(0 == chain) return; if(!FLAC__metadata_chain_read(chain, filename)) return; FLAC__StreamMetadata *picture FLAC__metadata_object_new(FLAC__METADATA_TYPE_PICTURE); FLAC__Metadata_Iterator *iterator = FLAC__metadata_iterator_new(); if(0 == iterator) return; FLAC__metadata_iterator_init(iterator, chain); while(FLAC__metadata_iterator_next(iterator)) ; const char *violation; if( !FLAC__metadata_object_picture_is_legal(picture, &violation)) printf( "Illegal Picture: %s", violation ); if(!FLAC__metadata_iterator_insert_block_after(iterator, picture)) { printf(L" ERROR: adding new PICTURE block to metadata"); FLAC__metadata_object_delete(picture); } FLAC__metadata_iterator_delete(iterator); FLAC__metadata_chain_sort_padding(chain); if(!FLAC__metadata_chain_write(chain, true, false )) { const FLAC__Metadata_ChainStatus status FLAC__metadata_chain_status(chain); printf( "Fail to write: %d", status ); } FLAC__metadata_chain_delete(chain); The above code will add a NULL cover art into the flac file, it works. However, after I add the following code between the call of FLAC__metadata_iterator_next and FLAC__metadata_object_picture_is_legal, I got a "fail to write: status 0" message. picture->data.picture.type = (FLAC__StreamMetadata_Picture_Type)3; FLAC__metadata_object_picture_set_mime_type( picture, "image/jpeg", true ); FLAC__metadata_object_picture_set_description( picture, (FLAC__byte*)"", true ); CFile picfile; picfile.Open( L"I:\\1.jpg", CFile::modeRead | CFile::shareDenyWrite); ULONGLONG dwLength = picfile.GetLength(); LPSTR pData = new char[static_cast<unsigned int>(dwLength+1)]; picfile.Read(pData, static_cast<UINT>(dwLength)); FLAC__metadata_object_picture_set_data( picture, (FLAC__byte*)pData, dwLength, true ); delete [] pData; I did some tests and it seemed that the error was caused by the FLAC__metadata_object_picture_set_data function, the members of picture object like width, height, depth, colors were not initialized, are they mandatory or optional? What's wrong with the code? Please help! -- Best Regards -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.xiph.org/pipermail/flac-dev/attachments/20100309/8cb73a66/attachment.htm