Janne Grunau <janne-li...@jannau.net> writes: > On 2012-08-15 09:28:46 +0100, Måns Rullgård wrote: >> aviad rozenhek <avia...@gmail.com> writes: >> >> > On Mon, Aug 13, 2012 at 12:33 PM, aviad rozenhek <avia...@gmail.com> wrote: >> > >> >> unary minus operator applied to unsigned type, result still unsigned >> >> >> >> >> >> I get this compiler warning when using any if the specialized AVERROR_XXX >> >> macros, like AVERROR_BSF_NOT_FOUND or AVERROR_DECODER_NOT_FOUND. >> >> >> >> the reason is because >> >> >> >>> #define AVERROR_BSF_NOT_FOUND (-MKTAG(0xF8,'B','S','F')) ///< >> >>> Bitstream filter not found >> >> >> >> >> >> and the result from MKTAG is *unsigned* . >> > >> > how about we stop using the high byte [which contains the sign, thus making >> > the tag convertible to signed, like so, would this work? >> > >> > #define DEFINE_AVERROR_3CC_TAG(a, b, c) (-(int32_t)MKTAG(a, b, c, 0)) >> >> Or how about we revert 6b34fbb and fix the one case where that matters >> differently? > > Depends a little of that the user of MKTAG is expecting? Reverting > 6b34fbb is only fine if we make clear that MKTAG is only supposed > to be used with 7 bit chars. > > But I suspect most user of it will expect MKTAG(0xff, 0xff, 0xff, > 0xff) to work.
Why should they? It is generally used only with printable ascii characters. > I would add a AVERROR_MKTAG without the unsigned cast and keep > 6b34fbb. It has the additional advantage of removing use of the > unprefixed MKTAG from a public header. avformat.h is the only other > public header which uses MKTAG. Naming is unrelated. The real question here is why the hell those error codes are using MKTAG in the first place? -- Måns Rullgård m...@mansr.com _______________________________________________ libav-devel mailing list libav-devel@libav.org https://lists.libav.org/mailman/listinfo/libav-devel