Commit Graph

1415 Commits

Author SHA1 Message Date
Moritz Bunkus
c11c95126b Frames with forward-only references are more or less P frames. 2005-07-19 18:35:26 +00:00
Moritz Bunkus
218425a0f8 Don't pass objects through ... 2005-07-19 18:19:28 +00:00
Moritz Bunkus
052b45ab52 AVC/H.264: Non-I frames reference the previous "P" frame just as if "B" frames were referenced as well and not the previous I frame. 2005-07-19 17:31:43 +00:00
Moritz Bunkus
688ea33885 That Printf was producing wrong results on x86_64 for some reason. 2005-07-19 08:39:00 +00:00
Moritz Bunkus
f3bfcd091d Spelling. 2005-07-19 07:43:19 +00:00
Moritz Bunkus
8d72574b9f Changed the timecode parsers to be more flexible in what formats they accept. Removed all other timecode parsers except the one in common.cpp and made the other parts of the programs use this one. Updated the documentation. 2005-07-16 14:51:18 +00:00
Moritz Bunkus
5e5005e16d Do not reformat the <text> ... </text> entries during USF extraction. 2005-07-08 13:14:54 +00:00
Moritz Bunkus
ec3f6f4b33 Use the xml_parser_c class in the xml_formatter_c class instead of calling expat directly. 2005-07-08 12:55:12 +00:00
Moritz Bunkus
e502fc7c05 Older versions of expat don't know XML_ERROR_FINISHED yet. 2005-07-08 12:22:37 +00:00
Moritz Bunkus
c8426104bc Fixed support for USF subtitles stored in UTF-16 and UTF-32. Added support for USF subtitles stored in UTF-8 without a BOM. Both work by parsing the "<?xml ... encoding="..." ...?>" line and adjusting the "encoding" attribute if necessary. 2005-07-08 12:12:51 +00:00
Moritz Bunkus
84f7683e07 Wrote a small wrapper class around expat and converted the USF reader to using it. This is a pre-step for supporting XML files with encoding="UTF-16". 2005-07-07 14:09:27 +00:00
Moritz Bunkus
311e1837d4 Missing a newline. 2005-07-06 12:54:11 +00:00
Moritz Bunkus
b8296e4d0b Updated the version number & the release code name. 2005-07-01 08:11:31 +00:00
Moritz Bunkus
3202c2e4f9 Wrong variable in the loop (robux' fault ;) He wrote the patch ;)). 2005-06-26 12:32:36 +00:00
Moritz Bunkus
705524491f The default value for track languages is "eng". 2005-06-26 11:08:14 +00:00
Moritz Bunkus
16cf402352 Don't strip white spaces inside <text> ... </text>, but strip the outer white spaces around a complete entry. 2005-06-26 10:37:38 +00:00
Moritz Bunkus
b3605794c9 Moved the MPEG-4 part 2 FourCC detection into mpeg4_common.cpp. Let the OGM reader use the MPEG-4 part 2 video packetizer so that native MPEG-4 can be used. 2005-06-26 10:04:02 +00:00
Moritz Bunkus
9b3b24fbca If two consecutive calls to "end tag" for the same tag name were done then mkvmerge would wrongly only output one "<tag/>". 2005-06-26 09:03:23 +00:00
Moritz Bunkus
79b433d494 Reordered the "splitting" section and added an input box for the new "split after timecodes" feature. 2005-06-24 14:58:13 +00:00
Moritz Bunkus
2d22769e06 Make libebml happy so that it will write elements which still have their default value. 2005-06-24 10:36:55 +00:00
Moritz Bunkus
019faeced2 Indentation cosmetics. 2005-06-24 10:36:00 +00:00
Moritz Bunkus
8b5d160c70 The MPEG-1/-2 video packetizer has to create a new packet_t structure for each packet it passes downstream because it may produce more than one output packet from each input packet, and packet_t structures must only be used once. 2005-06-24 07:52:23 +00:00
Moritz Bunkus
f76cf0353e Upper chars are OK in --split, too. 2005-06-22 16:56:34 +00:00
Moritz Bunkus
0c356f0350 Non-native to native MPEG-4 part 2: If the frame queue contains more frames than the timecode queue timecodes then use the FPS and create new ones. If a FPS is not known then issue a warning and drop the frames which do not have a timecode available (at most one frame should have to be dropped anyway). 2005-06-17 09:37:52 +00:00
Moritz Bunkus
d809e013f7 Fix the codec version string for MPEG-4 codecs: if it indicates "DivX packed bitstream" then change it to not say "packed bitstream" anymore. 2005-06-16 14:01:14 +00:00
Moritz Bunkus
6a8e29fd18 Accidentally committed a lot of debug code. 2005-06-16 08:48:18 +00:00
Moritz Bunkus
056abda15b Changed the timecode_factory_c interface. The get_next() function receives the complete packet and not only a couple of its parameters. 2005-06-16 08:34:54 +00:00
Moritz Bunkus
70ac090c65 Output information about the assigned timecodes for Haali. 2005-06-16 08:09:34 +00:00
Moritz Bunkus
29f9905e5c Only define NULL if it is needed. 2005-06-12 09:31:11 +00:00
Moritz Bunkus
41f5e7af68 The queue for native MPEG4 must also be flushed if it contains two I/P frames and the next frame is an I or P frame. 2005-06-12 08:07:30 +00:00
Moritz Bunkus
3513341664 Assign consecutive numbers to all created packet_t objects. 2005-06-12 08:03:58 +00:00
Moritz Bunkus
e64f94534a Added a field for specifying a factor that the timecode factory might need, e.g. in MPEG2 field-vs-frame situations. 2005-06-10 12:31:57 +00:00
Moritz Bunkus
309b6e2cdf Make sure that all readers call their packetizers' flush() function when they run out of data. Make sure that all packetizers' flush() functions call generic_packetizer_c::flush() as well so that this one can save the fact that flush() has been called already. 2005-06-10 07:12:50 +00:00
Moritz Bunkus
0ead02b226 Removed some debug code. 2005-06-09 09:44:16 +00:00
Moritz Bunkus
16bb7e252a Check the saved window coordinates. If the window is minimized when mmg is closed then the coordinates are negative. Moving the window to that position upon restart will make it invisible. 2005-06-07 14:40:26 +00:00
Moritz Bunkus
f4d1a9d351 If a OGM style chapter file contains empty chapter names ("CHAPTER01NAME=" without something after the "=") then this chapter's timecode is used as the name instead of aborting. 2005-06-07 09:05:44 +00:00
Moritz Bunkus
abcb6ed05e Do not list the extensions of all supported media files in the "open file" dialog. It gets way too wide that way. 2005-06-05 17:07:21 +00:00
Moritz Bunkus
989f6a6c80 Added splitting after specific timecodes. 2005-06-05 14:39:57 +00:00
Moritz Bunkus
45ace4b5ea Split the --split parser function into separate onces for duration and size type arguments. Another preparation for splitting by other criteria. 2005-06-05 11:51:29 +00:00
Moritz Bunkus
62f78d92fb Implemented a more flexible system for splitting as a basis for split point and splitting-by-chapters support. 2005-06-05 11:28:19 +00:00
Moritz Bunkus
5d5aeaf3ce Ups... Forgot to change this back before committing. Now the segment was only found if its size was 0. 2005-06-05 11:01:39 +00:00
Moritz Bunkus
66ddac74d5 Handle infinite sized segments correctly. 2005-06-04 09:33:53 +00:00
Moritz Bunkus
9b8d9f1f0b Respect infinite sized elements. Use STL's sort algorithm and not my own bubble sort. 2005-06-04 09:32:33 +00:00
Moritz Bunkus
03adf4296b Added a new hack (--engage write_headers_twice) for writing the SegmentInfo and Tracks headers a second time directly after the clusters. Those will be indexed as well. 2005-05-29 09:53:37 +00:00
Moritz Bunkus
1ec08e1c28 Put <USFSubtitles> ... </USFSubtitles> into CodecPrivate, too. Otherwise the USF version number is lost. 2005-05-29 09:31:26 +00:00
Moritz Bunkus
ac9c14b265 Cleanups & speed improvements for the MPEG video parser. Patch by Steve Lhomme (see AUTHORS). 2005-05-26 17:59:10 +00:00
Moritz Bunkus
26a3f6083e Removed unneeded commented-out code. 2005-05-26 16:50:10 +00:00
Moritz Bunkus
a25e565d35 After add_packet() the function's packet_t argument belongs to the lower layers, and it must not be reused. It's a considerable speed gain. 2005-05-26 16:46:32 +00:00
Moritz Bunkus
8a2dfc771a No double delete. 2005-05-26 11:25:27 +00:00
Moritz Bunkus
96c08ba235 Complete rewrite of the parameter passing between generic_packetizer_c::process() and generic_packetizer_c::add_packet(). Those functions use the packet_t structure. There are a couple of more or less small memory leaks left. Those will be addressed later. 2005-05-25 21:31:26 +00:00
Moritz Bunkus
8ef2a14e09 Make sure that a track has actually been selected before trying to modify its data. Fixes Anthill bug 133. 2005-05-23 20:52:45 +00:00
Moritz Bunkus
ab93eb7ce6 'yes' is not a boolean, of course. 2005-05-23 20:35:28 +00:00
Moritz Bunkus
3d91659766 Implemented the extraction of USF subtitles. 2005-05-23 20:24:08 +00:00
Moritz Bunkus
f50aef90ef Added a XML pretty printer class. 2005-05-23 20:23:23 +00:00
Moritz Bunkus
d156b7e8cc Parse the <language> node of the <metadata> node as well instead of simply copying <metadata>. This is used as the default language if the <subtitles> node doesn't contain a valid <language> node. 2005-05-23 20:22:24 +00:00
Moritz Bunkus
b034ec2188 Moved the XML node name creation function into common.cpp. Escape the contents the XML way before putting them into CodecPrivate or the data blocks. 2005-05-22 17:40:11 +00:00
Moritz Bunkus
cbe0a25c38 Set the default compression method in the packetizer. Otherwise it would have to be set in each reader. 2005-05-22 10:05:03 +00:00
Moritz Bunkus
dce6b8c2ea The duration is not the end ;) 2005-05-22 08:30:32 +00:00
Moritz Bunkus
9a9029c27b Strip the <subtitle> ... </subtitle> tags for the data blocks. 2005-05-22 08:26:35 +00:00
Moritz Bunkus
8684a2289e Implemented the rest of the muxing process: creating the packetizers, handling the language, passing the data to the packetizer, sorting the entries. Removed all of the debug output, too. 2005-05-22 07:22:37 +00:00
Moritz Bunkus
77f39e7a2b Added an entry for USF subtitles to the "add file" dialog. 2005-05-22 07:20:28 +00:00
Moritz Bunkus
b887cde4a2 Slightly improved error message if a demultiplexer does not initialize properly. 2005-05-21 21:24:03 +00:00
Moritz Bunkus
4263140f14 The beginning of an USF parser. Implemented basic file parsing so that the private data and each entry is already available. Start and end timecodes are already stripped from the entries but not parsed yet. A lot of debug output, and there is no packetizer yet -- so only identifying a file works for the moment. Language processing is not implemented yet either. 2005-05-21 18:09:39 +00:00
Moritz Bunkus
99d2e62869 Enhanced the escape_xml function to escape quotes if necessary. 2005-05-21 18:07:29 +00:00
Moritz Bunkus
01c0480771 Use separate exceptions for errors thrown by mm_io_c and its children. 2005-05-21 16:30:58 +00:00
Moritz Bunkus
0a3f88b6d7 Pad MPEG packets up to 2048 bytes for VobSub extraction because some programs depend on it. Patch by Mike Matsnev <mike () po !cs ! msu ! su> 2005-05-17 17:39:00 +00:00
Moritz Bunkus
596d11ae2f Moved the XML mapping table initialization completely into the xml_element_map_init() function. 2005-05-07 16:26:30 +00:00
Moritz Bunkus
d08be3d074 Stupid buffer overflow... 2005-05-07 15:59:08 +00:00
Moritz Bunkus
ece399a299 Removed the restriction of having a maximum of ten levels of nesting for Matroska elements. 2005-05-07 15:32:50 +00:00
Moritz Bunkus
3a975f4798 Properly set the state of all radio buttons when a project file is loaded. This also affects what happens when "File -> new" is selected. On Windows "split by time" was not selectable anymore after "File -> new" if it had been selected before. Fixes Anthill bug 131. 2005-05-07 15:11:51 +00:00
Moritz Bunkus
e8cdd29702 Output text lines with new lines according to the OS (\r\n on Windows, \n on all other systems). 2005-05-05 14:51:30 +00:00
Moritz Bunkus
8cca15fa07 Strip newlines at the end of the "Format=" line. Otherwise the fields wanted might not be found and would be missing in the output. 2005-05-05 14:38:08 +00:00
Moritz Bunkus
3f8deaba4a Added the ChapterSegmentUID element to the chapter XML files. 2005-05-03 11:22:14 +00:00
Moritz Bunkus
bc804cd917 Ups, wrong position for that variable. 2005-05-02 14:58:39 +00:00
Moritz Bunkus
bb924c0038 Added the Windows implementation of the "improved" random number generation. 2005-05-02 14:55:09 +00:00
Moritz Bunkus
432d6a3596 Improved random number generation (lacking the Windows implementation which will come next). 2005-05-02 13:50:23 +00:00
Moritz Bunkus
b53de99588 Improved the support for native MPEG-4 (it actually works for three files now). Renamed a couple of function parameters in the process and moved the memory_c class into the "common" subdir. 2005-05-02 12:36:51 +00:00
Moritz Bunkus
37910a3c8f Support WAV files that use other RIFF chunks than the usual "fmt " followed by "data" by simply skipping those. 2005-04-29 08:56:01 +00:00
Moritz Bunkus
9340c97515 Actually check the output of parse_aac_data so that invalid codec data will not go unpunished. 2005-04-28 14:51:25 +00:00
Moritz Bunkus
9e6a80158e Refuse AAC codec data where the profile id is 0. 2005-04-28 14:50:43 +00:00
Moritz Bunkus
7aaa57b0e0 Safer handling of closing files. Also accept text files with a length < 4 bytes and don't segfault on them ;) 2005-04-25 12:24:49 +00:00
Moritz Bunkus
1097c66ae8 In case of remuxing MPEG-1/-2 video tracks from Matroska files simply hand the frames over as they are without sending them through the MPEG frame detection code. 2005-04-18 08:11:40 +00:00
Moritz Bunkus
9012ba609b I/P frames were freed to early after a cluster has been rendered resulting in unresolvable brefs. 2005-04-16 10:53:18 +00:00
Moritz Bunkus
c1d2c53d58 Hopefully fixed compilation with MSC which doesn't know va_copy but which allows using a va_list with a consumer function more than once. 2005-04-11 10:47:01 +00:00
Moritz Bunkus
ed3a1f4a53 Cache the file position instead of querying it all the time. 2005-04-10 09:07:45 +00:00
Moritz Bunkus
444cecc212 Bumped the version number and set the version codename. 2005-04-09 17:36:20 +00:00
Moritz Bunkus
78f13d2bc1 A va_list is undefined after a call to a consumer function like vsprintf. Therefore it has to be copied if it will be used multiple times. This was working on most 32bit systems but not on AMD64 anymore. Fixes Anthill bug 120. 2005-04-09 17:11:50 +00:00
Moritz Bunkus
608b681baa Added the extraction of raw data to mvkextract. Patch by Steve Lhomme (steve ! lhomme () free ! fr) with additions by myself. 2005-04-07 17:31:52 +00:00
Moritz Bunkus
dd697e5a49 Update the "number of samples in this file" header field upon extraction of WAVPACK data. Patch by Steve Lhomme (steve ! lhomme () free ! fr). 2005-04-07 17:15:31 +00:00
Moritz Bunkus
6f31a23ad3 Don't free memory handled by a smart pointer! 2005-04-07 17:10:35 +00:00
Moritz Bunkus
2f6d607e7c Useless variable removed. Patch by Steve Lhomme. 2005-04-07 16:55:55 +00:00
Moritz Bunkus
08e457eaaf Do not use the FPS field of RealMedia files for the default duration of RealVideo tracks. It may contain the maximum number of frames per second that the encoder should output or has output. Fixes Anthill bug 113. 2005-04-07 15:17:17 +00:00
Moritz Bunkus
4f08216474 If a Matroska file is appended to another one then the timecodes it reports downstream must be zero-based. This was not the case for "linked" files (files created with "--split ... --link"). Fixes Anthill bugs 115 and 116. 2005-04-07 15:00:22 +00:00
Moritz Bunkus
6c42e332e3 Only output warnings about failed calls to posix_fadvise in verbose mode and silently switch to not using it for that file anymore. 2005-04-07 08:53:06 +00:00
Moritz Bunkus
05f1b20cb3 Uppon concatenation of files including chapters all chapter atoms that share the same UID have to be merged into a single chapter atom with appropriate start and end timecodes. Addresses Anthill bug 122. 2005-04-07 08:46:58 +00:00
Moritz Bunkus
3da4169967 Documentation update. 2005-04-06 15:03:30 +00:00
Moritz Bunkus
31bd52a95b Chapters that span multiple segments during splitting have to be kept in all files, not just in the first one. Their start timecodes have to be adjusted, of course. 2005-04-06 14:32:43 +00:00
Moritz Bunkus
92c59814f3 Output timecodes in summary mode in a form that's easier to read, too, and not only in milliseconds. 2005-04-06 13:18:32 +00:00
Moritz Bunkus
d2d41d39bc Better handling of damaged/strange Matroska files -- e.g. if the block group does not contain a block, or if no headers have been found for a track number. 2005-03-28 19:13:48 +00:00
Moritz Bunkus
23a737b7ce Removed the lower limits for splitting by time and by size. 2005-03-27 10:32:03 +00:00