diff --git a/doc/html/changelog.html b/doc/html/changelog.html
index 1344ee06..3e14ccbc 100644
--- a/doc/html/changelog.html
+++ b/doc/html/changelog.html
@@ -115,12 +115,12 @@
- Interface changes (see also the porting guide for specific instructions on porting to FLAC 1.2.2):
+ Interface changes:
-
libFLAC:
- - (none)
+ - Added FLAC__format_blocksize_is_subset()
-
@@ -213,7 +213,7 @@
- Interface changes (see also the porting guide for specific instructions on porting to FLAC 1.2.1):
+ Interface changes:
-
libFLAC:
diff --git a/include/FLAC/format.h b/include/FLAC/format.h
index 83ec9653..ad118244 100644
--- a/include/FLAC/format.h
+++ b/include/FLAC/format.h
@@ -879,6 +879,18 @@ extern FLAC_API const unsigned FLAC__STREAM_METADATA_LENGTH_LEN; /**< == 24 (bit
*/
FLAC_API FLAC__bool FLAC__format_sample_rate_is_valid(unsigned sample_rate);
+/** Tests that a blocksize at the given sample rate is valid for the FLAC
+ * subset.
+ *
+ * \param blocksize The blocksize to test for compliance.
+ * \param sample_rate The sample rate is needed, since the valid subset
+ * blocksize depends on the sample rate.
+ * \retval FLAC__bool
+ * \c true if the given blocksize conforms to the specification for the
+ * subset at the given sample rate, else \c false.
+ */
+FLAC_API FLAC__bool FLAC__format_blocksize_is_subset(unsigned blocksize, unsigned sample_rate);
+
/** Tests that a sample rate is valid for the FLAC subset. The subset rules
* for valid sample rates are slightly more complex since the rate has to
* be expressible completely in the frame header.
diff --git a/src/libFLAC/format.c b/src/libFLAC/format.c
index be47146f..b795ac5c 100644
--- a/src/libFLAC/format.c
+++ b/src/libFLAC/format.c
@@ -223,6 +223,16 @@ FLAC_API FLAC__bool FLAC__format_sample_rate_is_valid(unsigned sample_rate)
return true;
}
+FLAC_API FLAC__bool FLAC__format_blocksize_is_subset(unsigned blocksize, unsigned sample_rate)
+{
+ if(blocksize > 16384)
+ return false;
+ else if(sample_rate <= 48000 && blocksize > 4608)
+ return false;
+ else
+ return true;
+}
+
FLAC_API FLAC__bool FLAC__format_sample_rate_is_subset(unsigned sample_rate)
{
if(